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

break, continue та інше в циклах

Усередині циклу (як 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 в циклі (ідіома Pythonic)

Особливість 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".

Вкладені цикли: break виходить лише з внутрішнього

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break виходить лише з for y, а не з for x. Щоб вийти з обох, ви повинні використовувати a прапорець або функція + return.

Незвичайна конструкція loop...else

У Python як цикли for, так і while можуть містити додаткову пропозицію else. Блок else виконується тільки якщо цикл завершується нормально (тобто без зустрічі з оператором break). Це дуже корисно для алгоритмів пошуку (наприклад, «шукати елемент: якщо знайдено, розірвати; інакше повідомити, що його не знайдено»).

Спробуйте самі

вправи#python.m2.l3.e1
Спроби: 0Завантаження…

У списку `numbers = [10, 15, 20, 25, 30, 35]` знайдіть перше число, яке ділиться на 7, і призначте його `результату`. Якщо такого не існує, присвойте -1.

Завантаження редактора…
Показати підказку

35 є першим (і єдиним) числом, яке ділиться на 7 у списку.

Рішення доступне після 3 спроб

Повторна вправа

вправи#python.m2.l3.e2
Спроби: 0Завантаження…

Створіть список `odd_numbers` з непарними числами від 1 до 20 (включно) за допомогою циклу for over range(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 спроб