Почему этот блок `else` работает, но не на том же уровне, что и в случае if?

Этот код работает довольно хорошо и генерирует требуемый список простых чисел. Но else Блок, который печатает наши простые числа, находится вне блока, но все равно работает, может кто-нибудь объяснить это мне?

for num in range(0, 100 + 1):
   # prime numbers are greater than 1
   if num > 1:
       for i in range(2, num):
           if (num % i) == 0:
               break
       else:
           print(num)

Ссылка: programiz.com

3 ответа

Решение

Питон имеет аккуратный for-else построить:

Для циклов также есть предложение else, с которым большинство из нас незнакомы. Предложение else выполняется, когда цикл завершается нормально. Это означает, что цикл не встретил никакого разрыва.

На самом деле, блок for также имеет ключевое слово else,

чужой документ

Распространенным вариантом использования предложения else в циклах является реализация поисковых циклов; Допустим, вы выполняете поиск элемента, который соответствует определенному условию, и вам необходимо выполнить дополнительную обработку или вызвать ошибку, если не найдено приемлемого значения.

см. https://shahriar.svbtle.com/pythons-else-clause-in-loops

Другие вопросы по тегам