Сообщить об ошибке.

while, цикл по условию в Python

Конструкция while/else, цикл по условию

Конструкция 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]