Сообщить об ошибке.

Поведение цикла, при использовании инструкций break, continue и else

Ключевое слово break, как и в C, прерывает выполнение блока for или while с выходом из него.

Операторы цикла могут иметь блок else, который выполняется, когда цикл заканчивается исчерпанием итерируемого объекта для for или когда условие становится ложным для while, но не тогда, когда цикл завершается оператором break. Это иллюстрируется следующим циклом, который ищет простые числа:

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...

# 2 is a prime number
# 3 is a prime number
# 4 equals 2 * 2
# 5 is a prime number
# 6 equals 2 * 3
# 7 is a prime number
# 8 equals 2 * 4
# 9 equals 3 * 3

Это правильный код. Посмотрите внимательно, инструкция else относится к блоку цикла for/in, а не к оператору if.

Оператор else в циклах, имеет больше общего с else в конструкциях с try, чем в конструкциях с if. В конструкциях с оператором try, else выполняется тогда, когда не поднимается исключение, и оператор цикла else выполняется тогда, когда не срабатывает break. Подробнее о конструкциях try/except/else/finally и исключениях смотри в разделе Обработка исключений.

Ключевое слово continue, заимствован из языка C. Если ход цикла встречает это ключевое слово, то будет пропущен один шаг. Другими словами, цикл продолжится со следующей итерации:

>>> for num in range(2, 10):
...     if num % 2 == 0:
...         print("Found an even number", num)
...         continue
...     print("Found a number", num)
...

# Found an even number 2
# Found a number 3
# Found an even number 4
# Found a number 5
# Found an even number 6
# Found a number 7
# Found an even number 8
# Found a number 9