Keywords: easytut

Next: Debugging Up: Non-Programmers Tutorial For Python Previous: Count to 10 Contents
Subsections

- If statement
- Examples
- Exercises

# Decisions

# If statement

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? -34
    The absolute value of -34 is 34

    Number? 1
    The absolute value of 1 is 1

So what does the computer do when 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 python 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. A `if` statement is followed by a block of statements that are run when the expression is true. Optionally after the `if` statement is a `else` statement. The `else` statement is run if the expression is false.

There are several different tests that a 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

Another feature of the `if` command is the `elif` statement. It stands for else if and means if the original `if` statement is false and then the `elif` part is true do that part. Here's a 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 fail to be true. `elif` allows multiple tests to be done in a single if statement.

# Examples

High_low.py

    #Plays the guessing game higher or lower
    # (originally written by Josh Cogliati, improved by Quique)

    #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:100
    Too high
    Guess a number:50
    Too low
    Guess a number:75
    Too low
    Guess a number:87
    Too high
    Guess a number:81
    Too high
    Guess a number:78
    Just 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: 3
    3 is odd.

    Tell me a number: 2
    2 is even.

    Tell me a number: 3.14159
    3.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 this to something that will not exit
    #           the while loop immediatly.

    print "Enter 0 to exit the loop"

    while number != 0:
        number = input("Enter a number:")
        count = count + 1
        sum = sum + number

    count = count - 1 #take off one for the last number
    print "The average was:",sum/count

Sample runs

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

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

average2.py

    #keeps asking for numbers until count have been entered.
    #Prints the average value.

    sum = 0.0

    print "This program will take several numbers than average them"
    count = input("How many numbers would you like to sum:")
    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 than average them
    How many numbers would you like to sum:2
    Number  1
    Enter a number:3
    Number  2
    Enter a number:5
    The average was: 4.0

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

# Exercises

Modify the password guessing program to keep track of how many times the user has entered the password wrong. If it is more than 3 times, print ``That must have been complicated.''

Write a program that asks for two numbers. If the sum of the numbers is greater than 100, print ``That is 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".

Next: Debugging Up: Non-Programmers Tutorial For Python Previous: Count to 10 Contents