### If statementEdit

As always I believe I should start each chapter with a warm-up typing exercise, so here is a short program to compute the absolute value of a number:

n = input("Number? ") if n < 0: print "The absolute value of", n, "is", -n else: print "The absolute value of", n, "is", n

Here is the output from the two times that I ran this program:

Number?-34The absolute value of -34 is 34

Number?1The absolute value of 1 is 1

So what does the computer do when it sees this piece of code? First it prompts the user for a number with the statement "`n = input("Number? ")`

". Next it reads the line "`if n < 0:`

". If `n`

is less than zero Python runs the line "`print "The absolute value of", n, "is", -n`

". Otherwise it runs the line "`print "The absolute value of", n, "is", n`

".

More formally Python looks at whether the *expression* `n < 0`

is true or false. An `if`

statement is followed by an indented *block* of statements that are run when the expression is true. Optionally after the `if`

statement is an `else`

statement and another indented *block* of statements. This second block of statements is run if the expression is false.

There are a number of different tests that an expression can have. Here is a table of all of them:

operator | function |
---|---|

`<` |
less than |

`<=` |
less than or equal to |

`>` |
greater than |

`>=` |
greater than or equal to |

`==` |
equal |

`!=` |
not equal |

`<>` |
another way to say not equal (old style, not recommended) |

Another feature of the `if`

command is the `elif`

statement. It stands for else if and means if the original `if`

statement is false but the `elif`

part is true, then do the `elif`

part. And if neither the `if`

or `elif`

expressions are true, then do what's in the `else`

block. Here's an example:

a = 0 while a < 10: a = a + 1 if a > 5: print a, ">", 5 elif a <= 7: print a, "<=", 7 else: print "Neither test was true"

and the output:

1 <= 7 2 <= 7 3 <= 7 4 <= 7 5 <= 7 6 > 5 7 > 5 8 > 5 9 > 5 10 > 5

Notice how the `elif a <= 7`

is only tested when the `if`

statement fails to be true. There can be more than one `elif`

expression, allowing multiple tests to be done in a single `if`

statement.

### ExamplesEdit

# This Program Demonstrates the use of the == operator # using numbers print 5 == 6 # Using variables x = 5 y = 8 print x == y

And the output

False False

**High_low.py**

# Plays the guessing game higher or lower # This should actually be something that is semi random like the # last digits of the time or something else, but that will have to # wait till a later chapter. (Extra Credit, modify it to be random # after the Modules chapter) number = 78 guess = 0 while guess != number: guess = input("Guess a number: ") if guess > number: print "Too high" elif guess < number: print "Too low" print "Just right"

Sample run:

Guess a number:100Too high Guess a number:50Too low Guess a number:75Too low Guess a number:87Too high Guess a number:81Too high Guess a number:78Just right

**even.py**

# Asks for a number. # Prints if it is even or odd number = input("Tell me a number: ") if number % 2 == 0: print number, "is even." elif number % 2 == 1: print number, "is odd." else: print number, "is very strange."

Sample runs:

Tell me a number:33 is odd.

Tell me a number:22 is even.

Tell me a number:3.141593.14159 is very strange.

**average1.py**

# keeps asking for numbers until 0 is entered. # Prints the average value. count = 0 sum = 0.0 number = 1 # set to something that will not exit the while loop immediately. print "Enter 0 to exit the loop" while number != 0: number = input("Enter a number: ") if number != 0: count = count + 1 sum = sum + number print "The average was:", sum / count

Sample runs:

Enter 0 to exit the loop Enter a number:3Enter a number:5Enter a number:0The average was: 4.0

Enter 0 to exit the loop Enter a number:1Enter a number:4Enter a number:3Enter a number:0The average was: 2.66666666667

**average2.py**

# keeps asking for numbers until count numbers have been entered. # Prints the average value. sum = 0.0 print "This program will take several numbers then average them" count = input("How many numbers would you like to average: ") current_count = 0 while current_count < count: current_count = current_count + 1 print "Number", current_count number = input("Enter a number: ") sum = sum + number print "The average was:", sum / count

Sample runs:

This program will take several numbers then average them How many numbers would you like to average:2Number 1 Enter a number:3Number 2 Enter a number:5The average was: 4.0

This program will take several numbers then average them How many numbers would you like to average:3Number 1 Enter a number:1Number 2 Enter a number:4Number 3 Enter a number:3The average was: 2.66666666667

### ExercisesEdit

- Modify the higher or lower program from this section to keep track of how many times the user has entered the wrong number. If it is more than 3 times, print "That must have been complicated." Note that the program does not have to quit asking for the number before it is guessed, it just has to print this after the number is guessed.
- Write a program that asks for two numbers. If the sum of the numbers is greater than 100, print "That is a big number."
- Write a program that asks the user their name, if they enter your name say "That is a nice name", if they enter "John Cleese" or "Michael Palin", tell them how you feel about them ;), otherwise tell them "You have a nice name."

Modify the higher or lower program from this section to keep track of how many times the user has entered the wrong number. If it is more than 3 times, print "That must have been complicated."

number = 42 guess = 0 count = 0 while guess != number: count = count + 1 guess = input('Guess a number: ') if guess > number: print 'Too high' elif guess < number: print 'Too low' else: print 'Just right' break if count > 2: print 'That must have been complicated.' break

Write a program that asks for two numbers. If the sum of the numbers is greater than 100, print "That is a big number."

number1 = input('1st number: ') number2 = input('2nd number: ') if number1 + number2 > 100: print 'That is a big number.'

Write a program that asks the user their name, if they enter your name say "That is a nice name", if they enter "John Cleese" or "Michael Palin", tell them how you feel about them ;), otherwise tell them "You have a nice name."

name = raw_input('Your name: ') if name == 'Ada': print 'That is a nice name.' elif name == 'John Cleese' or name == 'Michael Palin': print '... some funny text.' else: print 'You have a nice name.'