Цикл
while
в Python - этоif
(условие) при повторении. Циклfor
в Python - это присваивание при повторении.
Конструкция while
выполняет код внутри цикла до тех пор, пока условие остаётся истинным. Как только условия перестаёт быть истинным, цикл завершается. В Python, как и в C, любое ненулевое целочисленное значение имеет значение истины True
, ноль - это лож, False
. Условие также может быть строкой или списком, фактически любой последовательностью. Все, что имеет ненулевую длину, имеет значение True
, пустые последовательности - False
. Стандартные операторы сравнения пишутся так же, как в C: <
(меньше), >
(больше), ==
(равно), <=
(меньше или равно), >=
(больше или равно) и !=
(не равно).
count = 3 while count < 7: print(count, " < 7") count = count + 1 else: print (count, " = 7") # Код выведет: # 3 < 7 # 4 < 7 # 5 < 7 # 6 < 7 # 7 = 7
Цикл while
еще называют циклом с предусловием.
Пример бесконечного цикла, будет выполняться, пока вы не нажмете Ctrl+C:
while True: print('бесконечность ', end='')
Бесконечные циклы, как правило, являются одним из источников неустойчивой работы программы.
while
.Конструкция while
используется для повторного выполнения кода внутри цикла, пока выражение истинно True
:
while_stmt :: = "while" expression":" suite ["else" ":" suite]
Выражение expression
поддерживает цепочки сравнения, а также допускает указание нескольких условий, связанных логическими (булевыми) операторами OR
, AND
и NOT
. Например:
while 0 < y <= 100: ... # эквивалентно while 0 < y and y <= 100: ...
Конструкция while
многократно проверяет выражение expression
, при этом выполняет код внутри блока while
, и если expression
стало ложно FALSE
, то выполняется код внутри блока else
, если он присутствует, и цикл завершается.
break
: выполняется код внутри while
до оператора break
и завершает цикл без выполнения блока внутри else
. continue
: выполняется код внутри while
до оператора continue
, пропускает оставшуюся часть кода и возвращается к проверке выражения.Применим оператор break
и continue
в коде while/else
и посмотрим на их поведение. Будем создавать список четных чисел из последовательности чисел от 0 до 14
lst = list(range(15)) new_lst = [] i = 0 while len(new_lst) < 13: i += 1 # если число 8 есть в новом списке if 8 in new_lst: # прерываем цикл, при этом блок else не выполнится break # остаток от деления элемента списка a = lst[i] % 2 # если элемент списка не четный if a != 0: # пропускаем оставшийся код continue # добавление в список числа new_lst.append(lst[i]) else: print ("Напечатает, если убрать условие с break") print(new_lst) # Код выведет: [2, 4, 6, 7]