← Все вопросы

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

Задан 5 месяцев назад981 просмотров3 ответа
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 месяцев назад

Ваш ответ

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