Keywords: easytut

Далее: Отладка программ Наверх: Курс языка Python для начинающих Назад: Считаем до десяти Содержание
В этой главе

- Команда if
- Примеры
- Упражнения

# Выбор

# Команда if

Я полагаю, что как всегда, мне следует начинать каждую главу с разминки по работе на клавиатуре, поэтому представляю короткую программу для вычисления модуля числа:

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

А вот результат запуска программы дважды:

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

    Number? 1
    The absolute value of 1 is 1

Что же делает компьютер, когда он видит эту программу? Сначала он просит пользователя ввести число, выполняя команду `n = input("Number? ")`. Затем он переходит на команду `if n < 0:` Если `n` меньше нуля, Python выполняет команду `print "The absolute value of",n,"is",-n`. В противном случае он выполняет `print "The absolute value of",n,"is",n`.

Выражаясь более формально, Python проверяет, истинно или ложно выражение `n < 0`. За командой `if` следует блок команд, которые выполняются, если выражение истинно. Возможно, что после команды `if` идет команда `else`. Она выполняется, если выражение ложно.

Существуют несколько проверок, которые могут использовать выражения. Все они приводятся в следующей таблице:

оператор | значение
`<` | меньше
`<=` | меньше или равно
`>` | больше
`>=` | больше или равно
`==` | равно
`!=` | не равно
`<>` | другой вариант для не равно

Другая особенность команды `if` – `elif` альтернатива. Это - сокращение от английского «иначе если» и означает, что если первоначальное `if` ложно, и если `elif` часть истинна, выполняем эту часть. Пример:

    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"

и результат:

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

Обратите внимание, что выражение `elif a <= 7` проверяется только, если выражение в `if` ложно. `elif` позволяет провести несколько проверок внутри одной команды if.

# Примеры

High_low.py

    #Игра «Угадай число»
    # написана Джошем Коглиати, улучшена Квик

    #Здесь должно быть псевдослучайное число, например
    # последние цифры текущего времени, но с этим подождем
    # до главы «Модули». (Дополнительное задание -
    # использовать случайное число после главы «Модули»)
    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"

Пример работы программы:

    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

    #Запрашивает число.
    #Выдает ответ, четное оно или нечетное

    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."

Пример работы программы:

    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

    #Запрашивает ввод чисел пока пользователь не введет 0.
    #Выводит среднее арифметическое.

    count = 0
    sum = 0.0
    number = 1 #задайте что-либо что не завершит
    #           цикл while сразу же

    print "Enter 0 to exit the loop"

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

    count = count - 1 #вычтем единицу для номера
                      #последнего числа
    print "The average was:",sum/count

Пример работы программы:

    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

    #Запрашивает ввод чисел пока пользователь не введет 0.
    #Выводит среднее арифметическое.

    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

Пример работы программы:

    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

# Упражнения

Улучшите программу ввода пароля, учитывая, сколько раз пользователь ввел неправильный пароль. Если больше, чем 3 раза, выведите "That must of been complicated."

Напишите программу, которая запрашивает два числа. Если сумма чисел больше 100, выведите "That is a big number".

Напишите программу, которая спрашивает у пользователя его имя. Если будет введено ваше имя, выведите "That is a nice name", если будет введено "John Cleese" или "Michael Palin", выведите, что вы думаете о них, в остальных случаях выведите "You have a nice name".

Далее: Отладка программ Наверх: Курс языка Python для начинающих Назад: Считаем до десяти Содержание