for - else
Циклы - неотъемлемая часть любого языка программирования. В свою очередь цикл for
также важная часть Python. Однако, существует несколько вещей, связанных с for
, о которых не знают начинающие разработчики. Мы остановимся в этой главе на паре нюансов.
Начнём с того, что мы уже знаем. Мы можем использовать циклы for
следующим образом:
Это базовая структура цикла for
. Теперь перейдем к менее известным особенностям цикла for
в Python.
else
else
Циклы for
могут иметь блок else
и многие не знакомы с этим фактом. Блок else
выполняется, когда цикл завершается в нормальном режиме. Т.е. не был вызван break
. Это удобная особенность, которая придется весьма кстати, когда вы поймете где её стоит использовать. Я узнал об этой возможности далеко не сразу.
Типичный пример - поиск элемента в коллекции при помощи цикла for
. Если элемент найден - мы останавливаем цикл при помощи break
. Существует два сценария, при которых может завершиться исполнение цикла. Первый - элемент найден и вызван break
. Второй - элемент так и не был найден и цикл завершился. Мы хотим узнать, какой из этих двух вариантов вызвал остановку цикла. Типичным решением будет создание переменной-флага и её проверка после завершения цикла. Другой способ - использование блока else
.
Вот решение на for/else
:
Сравним с примером из официальной документации:
Код выше находит целочисленные делители для n. Теперь интересная часть. Мы можем использовать блок else
чтобы отслеживать простые числа и выводить их на экран:
Last updated