← Все вопросы

Что делает else у цикла for/while?

Задан 6 месяцев назад1.1к просмотров4 ответа
22

Увидел в чужом коде такое:

for x in data:
    if x == target:
        break
else:
    print('не найдено')

else относится к for?? Я думал else только у if бывает. Как это работает?

4 ответа

31
✓ Принятый ответ — помог автору

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

В твоём примере: если нашли target и сделали break — блок else пропускается. Если прошли весь список и ни разу не сорвались через break — выполнится print('не найдено').

Удобно как раз для поиска: «прошли всё и не нашли». Мнемоника: читай не как else, а как nobreak — «если не было break».

Вера Новикова а если внутри цикла исключение? тоже пропустится · 6 месяцев назад
Мария Сергеевна nobreak — гениально, теперь не забуду · 6 месяцев назад
Oleg Lugovskoi автор: да, при исключении else тоже не выполнится · 6 месяцев назад
9

Срабатывает, когда цикл дошёл до конца без break.

0

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

-5

else у цикла выполняется всегда после него, как обычный блок.

Екатерина Соловьёва неверно: при break он НЕ выполняется, в этом весь смысл · 6 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.