Шаг 28.
Основы языка Python.
Условные операторы и циклы. Цикл while

    На этом шаге мы рассмотрим назначение и особенности использования этого оператора.

    Выполнение инструкций в цикле while продолжается до тех пор, пока логическое выражение истинно. Цикл while имеет следующий формат:

<Начальное значение>
while <Условие>:
    <Инструкции>
    <Приращение> 
[else:
    <Блок, выполняемый, если не использовался оператор break>
]

    Последовательность работы цикла while:

  1. Переменной-счетчику присваивается начальное значение.
  2. Проверяется условие и, если оно истинно, выполняются инструкции внутри цикла, иначе выполнение цикла завершается.
  3. Переменная-счетчик изменяется на величину, указанную в параметре <Приращение>.
  4. Переход к пункту 2.
  5. Если внутри цикла не использовался оператор break, то после завершения выполнения цикла будет выполнен блок в инструкции else. Этот блок не является обязательным.

    Выведем все числа от 1 до 10, используя цикл while (рисунок 1).

i = 1	#  <Начальное значение>
while  i  <  11: #  <Условие>
    print(i) #  <Инструкции>
    i += 1   # <Приращение>


Рис.1. Вывод часел от 1 до 10. Текст программы и результат выполнения

Архив с файлом можно взять здесь.


   Замечание. Если <Приращение> не указано, цикл будет бесконечным. Чтобы прервать бесконечный цикл, следует нажать комбинацию клавиш Ctrl+С. В результате генерируется исключение KeyboardInterrupt, и выполнение программы останавливается. Следует учитывать, что прервать таким образом можно только цикл, который выводит данные.

    Выведем все числа от 100 до 1:

i = 100
while i:
    print(i)
    i -= 1

    Обратите внимание на условие - оно не содержит операторов сравнения. На каждой итерации цикла мы вычитаем единицу из значения переменной-счетчика. Как только значение будет равно 0, цикл остановится. Как вы уже знаете, число 0 в логическом контексте эквивалентно значению False, а проверка на равенство выражения значению True выполняется по умолчанию.

    С помощью цикла while можно перебирать и элементы различных структур. Но в этом случае следует помнить, что цикл while работает медленнее цикла for. В качестве примера умножим каждый элемент списка на 2:

arr = [1, 2, 3]
i, count = 0, len(arr)
while i < count:
    arr[i] *= 2
    i += 1
print(arr)


Рис.2. Перебор элементов списка. Текст программы и результат выполнения

Архив с файлом можно взять здесь.

    На следующем шаге мы рассмотрим оператор continue.




Предыдущий шаг Содержание Следующий шаг