break, continue и вложенные условия в цикле
Содержание курса
В предыдущем уроке мы научились управлять циклом через условие в заголовке: while работает, пока условие истинно, for перебирает элементы по диапазону. Но иногда нужно выйти из цикла раньше — не потому что диапазон закончился, а потому что внутри тела произошло что-то особенное. Именно для этого существует break.
Инструкция break: немедленный выход из цикла
Когда Python встречает break внутри тела цикла, он немедленно прекращает его выполнение — полностью, без возврата к заголовку. Управление переходит к первой строке после блока цикла.
Это принципиально другой механизм выхода по сравнению с тем, что мы видели раньше. В обычном while цикл завершается, когда условие в заголовке становится ложным. В for — когда элементы в последовательности заканчиваются. break же срабатывает изнутри, в любой момент итерации, независимо от заголовка.
Особенно полезна эта инструкция в связке с while True. Сам по себе while True — это бесконечный цикл: условие в заголовке никогда не станет ложным. Но если внутри тела стоит if с break, цикл завершится ровно тогда, когда выполнится нужное условие:
i = 0
while True:
if i == 3:
break
print(i)
i += 1
print("Цикл завершён")
Что происходит по шагам:
- Итерация 1:
i = 0, условиеi == 3ложно, печатаем0, увеличиваемi. - Итерация 2:
i = 1, условие ложно, печатаем1, увеличиваемi. - Итерация 3:
i = 2, условие ложно, печатаем2, увеличиваемi. - Итерация 4:
i = 3, условие истинно — выполняетсяbreak, цикл немедленно прекращается.
Вывод программы:
0 1 2 Цикл завершён
Обратите внимание: строка print("Цикл завершён") выполняется — она стоит уже за пределами цикла, и break передал управление именно туда.
Ещё важный момент: break завершает ближайший цикл. Если циклы вложены друг в друга, break выйдет только из внутреннего — внешний продолжит работу. Для выхода из нескольких уровней вложенности потребуются дополнительные механизмы, но в большинстве задач начального уровня один break решает всё, что нужно.
