Представляем первую команду управлением хода вычисления. Обычно компьютер начинает с первой строки и идет далее по порядку. Команды управления меняют порядок выполнения других команд или определяют, будут ли выполнены определенные команды. Следующая программа использует команду управления 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