← Все вопросы
Что делает else у цикла for/while?
22
Увидел в чужом коде такое:
for x in data:
if x == target:
break
else:
print('не найдено')
else относится к for?? Я думал else только у if бывает. Как это работает?
3 ответа
31
✓ Принятый ответ — помог автору
Да, у for и while есть свой else. Он выполняется, если цикл завершился нормально, то есть без break.
В твоём примере: если нашли target и сделали break — блок else пропускается. Если прошли весь список и ни разу не сорвались через break — выполнится print('не найдено').
Удобно как раз для поиска: «прошли всё и не нашли». Мнемоника: читай не как else, а как nobreak — «если не было break».
Вера Новикова а если внутри цикла исключение? тоже пропустится · 5 месяцев назад
Мария Сергеевна nobreak — гениально, теперь не забуду · 5 месяцев назад
Oleg Lugovskoi автор: да, при исключении else тоже не выполнится · 5 месяцев назад
9
Срабатывает, когда цикл дошёл до конца без break.
-5
else у цикла выполняется всегда после него, как обычный блок.
Екатерина Соловьёва неверно: при break он НЕ выполняется, в этом весь смысл · 5 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.