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

В этой главе

Выбор

Команда 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. Она выполняется, если выражение ложно.

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

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

Другая особенность команды ifelif альтернатива. Это - сокращение от английского «иначе если» и означает, что если первоначальное 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".


next up previous contents
Далее: Отладка программ Наверх: Курс языка Python для начинающих Назад: Считаем до десяти   Содержание
Джош Коглиати jjc@honors.montana.edu Версия Wikibooks: Курс языка Python Для начинающих на Wikibooks