Уроки модуля (3/4)
перерыв, продолжение и еще в циклах
Внутри цикла (как for, так и while) вы можете изменить обычный поток с помощью
три конструкции:
break— немедленный выход из цикла.continue— пропускает остальную часть тела и переходит к следующей итерации.else(в цикле) — выполняется, когда цикл завершается безbreak.
break
for n in [3, 7, 11, 4, 9]:
if n % 2 == 0:
primo_pari = n
break
primo_pari # 4break останавливает цикл как можно скорее. Все, что после break в
Тело текущей итерации НЕ выполняется.
continue
risultati = []
for n in range(1, 11):
if n % 2 == 0:
continue # skip evens
risultati.append(n * n)
risultati # [1, 9, 25, 49, 81]Думайте о continue как о «переходе к следующей итерации». Используется для фильтрации элементов
без добавления еще одного уровня отступа.
else в цикле (идиома Python)
Особенность Python: циклы также могут иметь else, выполняемый только в том случае, если
цикл завершился естественным образом (без break). Он идеально подходит для поиска:
target = 7
for n in [2, 4, 6, 8]:
if n == target:
trovato = True
break
else:
trovato = False
trovato # FalseПрочтите это как: " для каждого n в списке; если вы возьмете ветку break, пропустите
остальное; в противном случае выполните else".
Вложенные циклы: разрыв выходит только из самого внутреннего цикла.
for x in range(3):
for y in range(3):
if x == y == 1:
break
print(x, y)break выходит только из for y, но не из for x. Чтобы выйти из обоих, вы должны использовать
флаг или функция + return.
Необычная конструкция цикла...else
В Python циклы for и while могут содержать необязательное предложение else. Блок else выполняется только в том случае, если цикл завершается нормально (т. е. без оператора break). Это очень полезно для алгоритмов поиска (например, «искать элемент: если найден, сломать; иначе сообщить, что он не найден»).
Попробуйте сами
Учитывая список «числа = [10, 15, 20, 25, 30, 35]», найдите первое число, делящееся на 7, и присвойте его «результату». Если такового не существует, присвойте -1.
Показать подсказку
35 — первое (и единственное) число в списке, делящееся на 7.
Решение доступно после 3 попыток
Обзор упражнения
Создайте список `odd_numbers` с нечетными числами от 1 до 20 (включительно), используя цикл for по диапазону (1, 21), и продолжайте пропускать четные числа.
Показать подсказку
Если n четное, продолжить; в противном случае добавьте.
Решение доступно после 3 попыток
Дополнительная задача
Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.
Показать подсказку
Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.
Решение доступно после 3 попыток