Прервать миссию! break и continue
Два способа управлять циклом изнутри — остановить его совсем или пропустить один шаг — и особый блок else, который знает, был ли break.
Иногда нужно выйти из цикла раньше времени или пропустить один шаг, не завершая цикл целиком — для этого есть два ключевых слова, и один особый способ узнать, был ли break.
break — прервать цикл полностью
for number in range(1, 100):
if number == 5:
break # цикл останавливается насовсем
print(number)
Выведет только 1, 2, 3, 4 — как только number становится
равным 5, цикл прерывается, не дожидаясь оставшихся 94 значений range().
break прерывает только тот цикл, в котором находится — код после цикла продолжает выполняться как обычно. Это не аналог выхода из программы, а именно выход из повторения.continue — пропустить этот шаг
for number in range(1, 6):
if number == 3:
continue # пропускаем оставшуюся часть тела для этого шага
print(number)
Выведет 1, 2, 4, 5 — число 3 пропущено, но цикл продолжается дальше, в отличие от
break.
continue обрывает только текущий проход тела — сам цикл как продолжался, так и продолжается со следующего элемента. Это противоположность break, а не его более мягкий вариант.break и continue рядом
| break | continue | |
|---|---|---|
| Что происходит | цикл останавливается насовсем | текущая итерация обрывается, цикл идёт дальше |
| Код после цикла | выполняется сразу | выполняется только после того, как цикл закончится сам |
| Частый пример | нашли то, что искали — незачем продолжать | этот элемент не подходит — пропускаем именно его |
break в while True
Самое частое место для break — цикл while
True, где условие остановки естественнее проверить в середине тела:
komanda = ""
while True:
komanda = input("Введите команду (stop — выход): ")
if komanda == "stop":
break
print("Выполняю:", komanda)
while размещать continue ДО строки, которая меняет состояние (например, count += 1), опасно: эта строка будет пропускаться каждый раз, когда сработал continue, — и цикл может никогда не завершиться. Подробнее разберём в уроке об отладке циклов.loop-else — else у цикла, а не у if
У циклов for и while есть редко
используемая, но иногда очень удобная возможность — блок else,
который выполняется, только если цикл завершился без break:
chisla = [4, 8, 15, 16, 23, 42]
for n in chisla:
if n == 100:
print("Нашли 100!")
break
else:
print("100 не найдено ни разу")
else то же самое, что и у if, смысл совершенно другой. else у if означает «если условие ложно». else у цикла означает «если цикл закончился сам, а не через break». Если внутри цикла не было break вообще — блок else выполнится всегда, как только цикл дойдёт до конца.Мини-проект: цикл команд
Соберём while True, break и
работу со строками/условиями из глав 8-9 в маленький интерактивный цикл. Это учебная
демонстрация приёма, а не замена интерпретатору PySH из введения курса:
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}")