Keywords: easytut

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

- Циклы while
- Примеры

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

# Циклы 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

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