Инструкции break и continue в Python

Инструкции break и continue в Python: управление циклами for и while — прерывание и пропуск итераций.

break немедленно завершает весь цикл. continue пропускает оставшуюся часть текущей итерации и переходит к следующей. Обе инструкции работают в циклах for и while.

Инструкция break

Когда Python встречает break, он выходит из цикла немедленно — не дожидаясь ни следующей итерации, ни конца текущей.

fruits = ["яблоко", "банан", "вишня", "дыня"]

for fruit in fruits:
    if fruit == "вишня":
        break           # нашли — выходим
    print(fruit)

print("Поиск завершён")

Вывод:

яблоко
банан
Поиск завершён

«Вишня» и «дыня» не напечатаны: цикл прервался на «вишне», до print в этой итерации не дошло.

break в while

secret = 42
attempts = [10, 42, 7, 99]

for guess in attempts:
    print(f"Пробуем: {guess}")
    if guess == secret:
        print("Верно!")
        break

Вывод:

Пробуем: 10
Пробуем: 42
Верно!

break во вложенных циклах

break прерывает только тот цикл, в котором он стоит — внутренний. Внешний продолжается.

for i in range(1, 4):
    for j in range(1, 4):
        if j == 2:
            break          # выходим из внутреннего цикла
        print(f"i={i}, j={j}")

Вывод:

i=1, j=1
i=2, j=1
i=3, j=1

Инструкция continue

continue не завершает цикл — он лишь пропускает оставшийся код текущей итерации и переходит к следующей.

numbers = [1, 2, 3, 4, 5, 6]

for n in numbers:
    if n % 2 == 0:
        continue        # чётные пропускаем
    print(n)

Вывод:

1
3
5

continue в while

n = 0
while n < 8:
    n += 1
    if n % 3 == 0:
        continue        # кратные 3 пропускаем
    print(n)

Вывод:

1
2
4
5
7
8

Цикл for с else

Python поддерживает необычную конструкцию: else у цикла. Блок else выполняется, если цикл завершился без break.

primes_candidates = [4, 6, 7, 9]

for n in primes_candidates:
    for divisor in range(2, n):
        if n % divisor == 0:
            print(f"{n} не простое (делится на {divisor})")
            break
    else:
        print(f"{n} — простое число")

Вывод:

4 не простое (делится на 2)
6 не простое (делится на 2)
7 — простое число
9 не простое (делится на 3)

Сравнение break, continue и pass

ИнструкцияЧто делаетЦикл продолжается?
breakзавершает весь циклнет
continueпропускает остаток текущей итерациида, со следующей итерации
passничего не делаетда, продолжает текущую итерацию

Частые ошибки

Ошибка 1: break прерывает только внутренний цикл. Начинающие ждут, что break во вложенном цикле завершит всё. Для выхода из нескольких уровней используют флаг или рефакторинг в функцию с return.

found = False
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for row in matrix:
    for val in row:
        if val == 5:
            found = True
            break           # выходим из внутреннего
    if found:
        break               # выходим из внешнего

print("Нашли:", found)

Вывод:

Нашли: True

Ошибка 2: continue не пропускает итерацию while при неправильном обновлении счётчика.

# Плохо: n никогда не инкрементируется при чётных — бесконечный цикл!
# n = 0
# while n < 5:
#     if n % 2 == 0:
#         continue   # n не меняется → зависает
#     n += 1

# Хорошо: инкремент до continue
n = 0
while n < 5:
    n += 1
    if n % 2 == 0:
        continue
    print(n)

Вывод:

1
3
5

Коротко

  • break — выходит из цикла немедленно; прерывает только ближайший цикл при вложенности.
  • continue — пропускает остаток итерации и переходит к следующей.
  • Блок else у цикла выполняется, если цикл завершился без break.
  • В while убедитесь, что счётчик обновляется до continue, иначе получите бесконечный цикл.
Проверьте себя
1. Что выведет цикл: for val in "строка": if val == "о": break; print(val)?
Aс т р к а
Bстрока целиком
CНичего не выведет
Dс т р
2. Чем continue отличается от break?
Acontinue завершает программу, а break — только цикл
Bcontinue прерывает цикл полностью, а break пропускает итерацию
CРазницы нет — обе инструкции делают одно и то же
Dcontinue пропускает оставшуюся часть текущей итерации, а break прерывает весь цикл
3. Какой цикл прервёт инструкция break, если она находится внутри вложенного цикла (цикл в цикле)?
AОба цикла сразу
BВнутренний цикл
CВнешний цикл
DПрограмма завершится целиком
py
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем
Открыть курс →