next up previous contents
Далее: Выбор Наверх: Курс языка Python для начинающих Назад: Кто здесь?   Содержание

В этой главе

Считаем до десяти

Циклы while

Представляем первую команду управлением хода вычисления. Обычно компьютер начинает с первой строки и идет далее по порядку. Команды управления меняют порядок выполнения других команд или определяют, будут ли выполнены определенные команды. Следующая программа использует команду управления while:

a = 0
while a < 10:
        a = a + 1
        print a

А вот и поразительно интересный результат:

1
2
3
4
5
6
7
8
9
10

(После того как вы превратили свой компьютер в пятидолларовый калькулятор, вы думали, что хуже уже не будет?) Так что же эта программа делает? Сначала она выполняет команду a = 0 и записывает ноль в переменную a. Затем он выполняет: while a < 10: и проверяет, что a < 10. Первый раз, когда компьютер видит эту команду, a содержит ноль, поэтому она меньше десяти. Другими словами, пока a меньше десяти, компьютер будет выполнять команды, написанные с пробелами в начале строки.

А вот другой пример использования while:

a = 1
s = 0
print 'Enter Numbers to add to the sum.'
print 'Enter 0 to quit.'
while a != 0 :
        print 'Current Sum:',s
        a = input('Number? ')
        s = s + a
print 'Total Sum =',s

Первый раз, когда я запустил эту программу, Python вывел:

  File "sum.py", line 3
    while a != 0 
                ^
SyntaxError: invalid syntax
Оказалось, я забыл дописать : в конце строки while. Сообщение об ошибке указало на это и также отметило место где, по ее мнению, была ошибка, знаком ^. После того, как проблема была устранена, вот что я получил:
Enter Numbers to add to the sum.
Enter 0 to quit.
Current Sum: 0
Number? 200
Current Sum: 200
Number? -15.25
Current Sum: 184.75
Number? -151.85
Current Sum: 32.9
Number? 10.00
Current Sum: 42.9
Number? 0
Total Sum = 42.9

Обратите внимание, что print 'Total Sum =',s выполняется только один раз в конце. Команда while влияет только на команды, начинающиеся с пробелов (или знаков табуляции). Выражение != означает «не равно», поэтому while a != 0: означает: пока a не ноль, выполняйте последующие команды, начинающиеся с пробелов.

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

while 1 == 1:
     print "Help, I'm stuck in a loop."

Программа будет выводить "Help, I'm stuck in a loop." до конца света или пока вы ее не остановите. Остановить ее можно нажатием клавиш Control (Ctrl) и c (буква) одновременно. Это заставит программу остановиться. (Обратите внимание, иногда после нажатия этих двух клавиш надо нажать Enter).

Примеры

Fibonnacci.py

#Программа находит числа Фибонначи
a = 0
b = 1
count = 0
max_count = 20
while count < max_count:
    count = count + 1
    #необходимо сохранить старое значение a, 
    # поскольку мы его меняем
    old_a = a
    old_b = b
    a = old_b
    b = old_a + old_b
    #обратите внимание, что запятая в конце команды print 
    # не дает перевести позицию печати на новую строку
    print old_a,
print

Результат:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

Password.py

# Ждет правильный пароль. Используйте Ctrl-C для
# завершения программы без пароля

#Обратите внимание, это должно отличаться от пароля, 
# чтобы цикл while выполнился хотя бы один раз 
password = "foobar"

#обратите внимание, что != значит «не равно»
while password != "unicorn":
    password = raw_input("Password:")
print "Welcome in"

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

Password:auo
Password:y22
Password:password
Password:open sesame
Password:unicorn
Welcome in


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