Модульні уроки (3/4)
break, continue та інше в циклах
Усередині циклу (як 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 в циклі (ідіома Pythonic)
Особливість 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".
Вкладені цикли: break виходить лише з внутрішнього
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). Це дуже корисно для алгоритмів пошуку (наприклад, «шукати елемент: якщо знайдено, розірвати; інакше повідомити, що його не знайдено»).
Спробуйте самі
У списку `numbers = [10, 15, 20, 25, 30, 35]` знайдіть перше число, яке ділиться на 7, і призначте його `результату`. Якщо такого не існує, присвойте -1.
Показати підказку
35 є першим (і єдиним) числом, яке ділиться на 7 у списку.
Рішення доступне після 3 спроб
Повторна вправа
Створіть список `odd_numbers` з непарними числами від 1 до 20 (включно) за допомогою циклу for over range(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 спроб