break, continue и pass
break, continue и pass
Циклы for и while выполняются по стандартной схеме: одна итерация за другой до завершения. Но иногда нужно управлять этим процессом гибко: досрочно выйти из цикла, пропустить текущую итерацию или оставить пустой блок-заглушку. Для этого в Python есть три ключевых слова: break, continue и pass.
break: досрочный выход из цикла
break немедленно завершает цикл — не важно, сколько итераций ещё осталось. Выполнение продолжается с первой строки после цикла.
for i in range(10):
if i == 5:
break
print(i)
print("После цикла")
Вывод:
0
1
2
3
4
После цикла
Когда i становится 5, break прерывает цикл — числа 5, 6, 7, 8, 9 не выводятся.
break работает и в while:
while True:
text = input("Введите текст (quit для выхода): ")
if text == "quit":
break
print(f"Вы написали: {text}")
print("До свидания!")
while True создаёт потенциально бесконечный цикл. break — единственный способ из него выйти. Это один из самых распространённых идиоматических паттернов в Python.
break для поиска
Типичная задача: найти первый элемент, удовлетворяющий условию, и остановиться:
numbers = [4, 7, 2, 9, 1, 8, 3]
target = 9
found = False
for n in numbers:
if n == target:
found = True
break # нашли — нет смысла перебирать дальше
if found:
print(f"Число {target} найдено")
else:
print(f"Число {target} не найдено")
Без break цикл продолжался бы до конца даже после нахождения — лишняя работа.
continue: пропустить текущую итерацию
continue прерывает текущую итерацию и сразу переходит к следующей. Оставшийся код в теле цикла для этой итерации не выполняется.
for i in range(10):
if i % 2 == 0:
continue # чётные числа — пропускаем
print(i) # выводим только нечётные
Вывод: 1 3 5 7 9
Другой пример — пропуск «плохих» данных:
items = ["яблоко", "", "банан", None, "вишня", ""]
for item in items:
if not item: # пустая строка или None — truthy проверка
continue
print(item.upper())
Вывод: ЯБЛОКО, БАНАН, ВИШНЯ — пустые строки и None пропущены.
continue в while
n = 0
while n < 10:
n += 1
if n % 3 == 0:
continue # пропускаем кратные 3
print(n)
Вывод: 1, 2, 4, 5, 7, 8, 10 (пропущены 3, 6, 9).
Важно: в while операция n += 1 должна стоять до continue, иначе получите бесконечный цикл — continue перескочит обратно на проверку, n не изменится, и цикл зависнет.
pass: заглушка
pass — это оператор, который буквально ничего не делает. Он нужен там, где Python синтаксически требует тело блока, но вы пока не готовы его заполнить.
for i in range(5):
pass # цикл выполняется 5 раз, но ничего не происходит
if True:
pass # заглушка — блок синтаксически корректен
Зачем это нужно? При постепенной разработке кода вы можете написать структуру программы, не заполняя все блоки сразу:
def validate_input(data):
pass # TODO: реализовать позже
def process(data):
pass # TODO: реализовать позже
pass позволяет коду запускаться без ошибок на этапе, когда реализация ещё не готова.
Вложенные циклы и break
Важный момент: break выходит только из ближайшего цикла, а не из всех вложенных сразу:
for i in range(3):
for j in range(3):
if j == 1:
break # выход только из внутреннего цикла
print(f"i={i}, j={j}")
Вывод:
i=0, j=0
i=1, j=0
i=2, j=0
Внешний цикл продолжает работать — break прервал только внутренний.
Проверь себя
Что выведет следующий код?
for i in range(1, 8):
if i == 3:
continue
if i == 6:
break
print(i)
Числа 1..7: 1 → вывод; 2 → вывод; 3 → continue, пропуск; 4 → вывод; 5 → вывод; 6 → break, выход. Вывод: 1 2 4 5.
Итог
break— досрочный выход из цикла; выполнение продолжается после цикла.continue— пропустить текущую итерацию, перейти к следующей.pass— оператор-заглушка, который ничего не делает; нужен для синтаксически корректных пустых блоков.breakиcontinueработают в обоих циклах:forиwhile.breakвwhile True:— идиоматический паттерн для цикла с выходом по условию внутри тела.breakвыходит только из ближайшего (самого внутреннего) цикла.
В следующем уроке познакомимся с необычной конструкцией Python: else у цикла.