все Python 3Циклыконструкция
else в циклах
управление
Блок else у цикла выполняется, только если цикл завершился БЕЗ break. Удобен для паттерна «поиск с флагом».
Синтаксис
for/while ...:
...
else:
блок_если_не_break
Ключ к пониманию — читать не «иначе», а «если не было break»: блок else отрабатывает при нормальном завершении цикла (в том числе когда цикл вообще не пошёл из-за пустого итерируемого) и пропускается только при break. Типичная ошибка — считать, что else привязан к if внутри цикла; на самом деле он относится к самому for/while.
Примеры
for i in range(2, 10):
if 15 % i == 0:
print(f"15 делится на {i}") # → 15 делится на 3
break
else:
print("15 простое") # не выполнится
target = 99
for x in [1, 2, 3]:
if x == target:
break
else:
print("не найдено") # → не найдено
i = 0
while i < 3:
i += 1
else:
print("while завершён штатно") # → while завершён штатно
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности