Перейти к основному содержимому
Модуль 2 · Урок 3 из 47/36 в курсе~10 min
Уроки модуля (3/4)

перерыв, продолжение и еще в циклах

Внутри цикла (как for, так и while) вы можете изменить обычный поток с помощью три конструкции:

  • break — немедленный выход из цикла.
  • continue — пропускает остальную часть тела и переходит к следующей итерации.
  • else (в цикле) — выполняется, когда цикл завершается без break.

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break останавливает цикл как можно скорее. Все, что после break в Тело текущей итерации НЕ выполняется.

continue

Python
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). Он идеально подходит для поиска:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

Прочтите это как: " для каждого n в списке; если вы возьмете ветку break, пропустите остальное; в противном случае выполните else".

Вложенные циклы: разрыв выходит только из самого внутреннего цикла.

Python
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). Это очень полезно для алгоритмов поиска (например, «искать элемент: если найден, сломать; иначе сообщить, что он не найден»).

Попробуйте сами

Упражнение#python.m2.l3.e1
Попыток: 0Загрузка…

Учитывая список «числа = [10, 15, 20, 25, 30, 35]», найдите первое число, делящееся на 7, и присвойте его «результату». Если такового не существует, присвойте -1.

Загрузка редактора…
Показать подсказку

35 — первое (и единственное) число в списке, делящееся на 7.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#python.m2.l3.e2
Попыток: 0Загрузка…

Создайте список `odd_numbers` с нечетными числами от 1 до 20 (включительно), используя цикл for по диапазону (1, 21), и продолжайте пропускать четные числа.

Загрузка редактора…
Показать подсказку

Если n четное, продолжить; в противном случае добавьте.

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#python.m2.l3.e3
Попыток: 0Загрузка…

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 попыток