# Non-Programmer's Tutorial for Python 3/Decisions

### If statement[edit]

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 an integer:

n = int(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 = int(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 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 <= 3: print(a, "<=", 3) else: print("Neither test was true")

and the output:

1 <= 3 2 <= 3 3 <= 3 Neither test was true Neither test was true 6 > 5 7 > 5 8 > 5 9 > 5 10 > 5

Notice how the `elif a <= 3`

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.

### Examples[edit]

# 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 = 7 guess = -1 print("Guess the number!") while guess != number: guess = int(input("Is it... ")) if guess == number: print("Hooray! You guessed it right!") elif guess < number: print("It's bigger...") elif guess > number: print("It's not so big.")

Sample run:

Guess the number! Is it...2It's bigger... Is it...5It's bigger... Is it...10It's not so big. Is it...7Hooray! You guessed it right!

**even.py**

# Asks for a number. # Prints if it is even or odd number = float(input("Tell me a number: ")) if number % 2 == 0: print(int(number), "is even.") elif number % 2 == 1: print(int(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.48953.4895 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 = float(input("Enter a number: ")) if number != 0: count = count + 1 sum = sum + number if number == 0: 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. #Notice that we use an integer to keep track of how many numbers, # but floating point numbers for the input of each number sum = 0.0 print("This program will take several numbers then average them") count = int(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 = float(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

### Exercises[edit]

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 = input('Your name: ') if name == 'Ada': print('That is a nice name.') elif name == 'John Cleese': print('... some funny text.') elif name == 'Michael Palin': print('... some funny text.') else: print('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." at the end, otherwise print "Good job!"

number = 7 guess = -1 count = 0 print("Guess the number!") while guess != number: guess = int(input("Is it... ")) count = count + 1 if guess == number: print("Hooray! You guessed it right!") elif guess < number: print("It's bigger...") elif guess > number: print("It's not so big.") if count > 3: print("That must have been complicated.") else: print("Good job!")

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 = float(input('1st number: ')) number2 = float(input('2nd number: ')) if number1 + number2 > 100: print('That is a big number.')