Управление циклами: операторы break и continue
Когда циклы выходят из-под контроля 🎢
Представь, что твой код — это поезд на круговой дороге. Что если нужно срочно остановиться или пропустить станцию? Вот где на сцену выходят break и continue — аварийные тормоза и экспресс-режим для циклов!
Полный стоп: оператор break ✋
Работает как красная кнопка — моментально прерывает весь цикл, даже если условие ещё не выполнено. Идеально для экстренных случаев!
secret_number = 42
while True: # Бесконечный цикл на первый взгляд
guess = int(input("Угадай число от 1 до 100: "))
if guess == secret_number:
print("🎉 Ты взломал систему!")
break # Выходим из цикла сразу после угадывания
print("Попробуй ещё!")
print("Игра окончена, спасибо за участие!")
Когда применять: - Поиск элемента в коллекции (нашли — выходим) - Обработка ошибок (что-то пошло не так — стоп) - Выход из бесконечных циклов по условию
Пропуск хода: оператор continue ⏭️
Этот оператор — как умная перемотка. Он пропускает текущую итерацию, но сам цикл продолжается.
# Напечатаем только нечётные числа
for num in range(1, 11):
if num % 2 == 0:
continue # Пропускаем чётные
print(f"Нечётное число: {num}")
Результат:
Нечётное число: 1
Нечётное число: 3
Нечётное число: 5
Нечётное число: 7
Нечётное число: 9
Где полезен: - Фильтрация элементов в цикле - Пропуск «битых» данных - Игнорирование определённых условий
Готовим с циклами: практический пример 🍳
Давай смоделируем кухонный таймер с продвинутыми функциями:
import time
print("🍳 Таймер готовки активирован!")
for minute in range(5, 0, -1):
if minute == 2: # Особое условие на 2-й минуте
print("\n⚠️ Внимание! Добавьте специи!")
time.sleep(3) # Даём 3 секунды на реакцию
continue
print(f"\nОсталось: {minute} мин")
time.sleep(1) # Ждём 1 секунду
if input("Прервать готовку? (y/n): ") == 'y':
print("Экстренная остановка! ❌")
break
else: # Срабатывает, если break не вызывался
print("\nБлюдо готово! Приятного аппетита! 🍽️")
Фишки примера:
continueпропускает стандартный отсчёт при добавлении специйbreakмгновенно останавливает процессelseдля цикла выполняется только при нормальном завершении
Под капотом: как это работает 🔧
На низком уровне:
break— передаёт управление сразу после всего циклаcontinue— переходит к следующей итерации, пропуская остаток тела цикла
Важно: Вложенные циклы прерываются только на текущий уровень!
Опасные повороты: частые ошибки 🚧
- Бесконечные циклы — забыли
breakвwhile True
# Опасно!
while True:
if condition:
print("Почти вышли...")
# Но забыли break!
- Слишком ранний continue — пропускаем важный код
for item in collection:
if not is_valid(item):
continue
save_to_db(item) # Может никогда не выполниться
send_notification() # Если is_valid вернёт False
Продвинутые трюки с Danila Bezhin 🎩
Для любителей глубины: на YouTube-канале Данилы Бежина есть разбор, как использовать break/continue в генераторах и вместе с else для циклов — мощные паттерны!
Практикуйся как профи 💻
Попробуй модифицировать этот код. Что будет, если заменить break на continue?
password = "python123"
attempts = 3
while attempts > 0:
user_input = input("Введите пароль: ")
if user_input == password:
print("Доступ разрешён!")
break
attempts -= 1
else:
print("Система заблокирована!")
Экспериментируй, ошибайся, анализируй — это путь к мастерству! Каждый раз, когда используешь эти операторы, ты делаешь код умнее и эффективнее.