Глава 10 · Немного автоматизации!

Прервать миссию! break и continue

Два способа управлять циклом изнутри — остановить его совсем или пропустить один шаг — и особый блок else, который знает, был ли break.

Иногда нужно выйти из цикла раньше времени или пропустить один шаг, не завершая цикл целиком — для этого есть два ключевых слова, и один особый способ узнать, был ли break.

break — прервать цикл полностью

break.py
for number in range(1, 100):
    if number == 5:
        break  # цикл останавливается насовсем
    print(number)

Выведет только 1, 2, 3, 4 — как только number становится равным 5, цикл прерывается, не дожидаясь оставшихся 94 значений range().

СТАРТfor number in range(1,100)number == 5?НЕТостальная часть телаДА — break: выйти из циклаКОНЕЦ
break выходит СРАЗУ из цикла целиком — но не из программы
break не завершает программу
break прерывает только тот цикл, в котором находится — код после цикла продолжает выполняться как обычно. Это не аналог выхода из программы, а именно выход из повторения.

continue — пропустить этот шаг

continue.py
for number in range(1, 6):
    if number == 3:
        continue  # пропускаем оставшуюся часть тела для этого шага
    print(number)

Выведет 1, 2, 4, 5 — число 3 пропущено, но цикл продолжается дальше, в отличие от break.

СТАРТfor number in range(1,6)number == 3?НЕТостальная часть телаДА — continue: сразу к следующему шагу
continue пропускает остаток ТЕЛА и переходит к следующей итерации — цикл продолжается
continue не выходит из цикла
continue обрывает только текущий проход тела — сам цикл как продолжался, так и продолжается со следующего элемента. Это противоположность break, а не его более мягкий вариант.

break и continue рядом

breakcontinue
Что происходитцикл останавливается насовсемтекущая итерация обрывается, цикл идёт дальше
Код после циклавыполняется сразувыполняется только после того, как цикл закончится сам
Частый примернашли то, что искали — незачем продолжатьэтот элемент не подходит — пропускаем именно его

break в while True

Самое частое место для break — цикл while True, где условие остановки естественнее проверить в середине тела:

while_true_break.py
komanda = ""
while True:
    komanda = input("Введите команду (stop — выход): ")
    if komanda == "stop":
        break
    print("Выполняю:", komanda)
continue перед обновлением счётчика — частая ловушка
В цикле while размещать continue ДО строки, которая меняет состояние (например, count += 1), опасно: эта строка будет пропускаться каждый раз, когда сработал continue, — и цикл может никогда не завершиться. Подробнее разберём в уроке об отладке циклов.

loop-else — else у цикла, а не у if

У циклов for и while есть редко используемая, но иногда очень удобная возможность — блок else, который выполняется, только если цикл завершился без break:

loop_else.py
chisla = [4, 8, 15, 16, 23, 42]

for n in chisla:
    if n == 100:
        print("Нашли 100!")
        break
else:
    print("100 не найдено ни разу")
СТАРТПолучить следующийэлемент из chislaЕсть следующеечисло?НЕТprint('не найдено')ДАn == 100?ДАprint('Нашли!');breakКОНЕЦНЕТ — назад
else у цикла выполняется, только если цикл дошёл до конца БЕЗ break
loop-else — это НЕ if/else
Хотя слово else то же самое, что и у if, смысл совершенно другой. else у if означает «если условие ложно». else у цикла означает «если цикл закончился сам, а не через break». Если внутри цикла не было break вообще — блок else выполнится всегда, как только цикл дойдёт до конца.

Мини-проект: цикл команд

Соберём while True, break и работу со строками/условиями из глав 8-9 в маленький интерактивный цикл. Это учебная демонстрация приёма, а не замена интерпретатору PySH из введения курса:

cikl_komand.py
zhurnal = []
while True:
    komanda = input("Команда (help/list/stop): ").strip().lower()
    if komanda == "stop":
        print("Завершаю работу.")
        break
    elif komanda == "help":
        print("Доступно: help, list, stop")
    elif komanda == "list":
        print("Журнал:", zhurnal)
    else:
        zhurnal.append(komanda)
        print(f"Добавлено в журнал: {komanda}")
Практика: break и continue
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →
Практика: мини-проект «Цикл команд» и loop-else
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →