SkillPy

Бесконечный цикл в Python - почему и как остановить?

Время чтения10 мин чтения
Опубликовано23 августа 2026 г.
Легко
Python
Циклы
Ошибки
Начинающим
Бесконечный цикл в Python - почему и как остановить?

Бесконечный цикл в Python — это цикл while, который никогда не завершается: программа «зависает» и продолжает работать без конца. Причина почти всегда одна — условие цикла остаётся истинным, потому что переменная в нём не меняется. Ниже разберём, как быстро остановить зациклившуюся программу и как починить сам цикл.

Коротко

Как остановить прямо сейчас: нажми Ctrl + C в терминале — программа прервётся. Как починить: убедись, что переменная из условия while меняется внутри цикла и рано или поздно делает условие ложным. Чаще всего забывают строку вроде x += 1 — счётчик не растёт, x < 5 навсегда остаётся True, и цикл не выходит.

Почему программа на Python зацикливается?

Цикл while проверяет условие перед каждым повторением. Пока условие истинно (True), тело выполняется снова и снова. Если ничто внутри цикла не приближает условие к ложному значению, выхода не будет — это и есть бесконечный цикл.

x = 0
while x < 5:      # x всегда 0 — условие всегда True
    print(x)      # печатает 0 снова и снова, без конца

Выполнение прервано

Превышен лимит шагов (5000) — возможно бесконечный цикл

Переменная x не меняется в теле цикла, поэтому проверка x < 5 каждый раз возвращает True. Python честно выполняет то, что написано, — печатает 0 до бесконечности.

Как остановить и как исправить

Чтобы цикл завершился, переменную из условия нужно менять внутри тела:

x = 0
while x < 5:
    print(x)
    x += 1        # теперь x растёт и дойдёт до 5
0
1
2
3
4

Теперь x увеличивается на каждом шаге. Как только он станет равен 5, условие x < 5 вернёт False, и цикл завершится. Про сами циклы, while и оператор break подробно — в гайде Циклы в Python: for, while, break и continue.

Где та же ошибка прячется дальше?

Условие «не двигается» к выходу не только когда забыт x += 1. Частые случаи:

  • ❌ Счётчик меняется не в ту сторону. x = 0, а в теле x -= 1 — условие x < 5 не станет ложным никогда.
  • ❌ Меняется не та переменная. В условии while count < 10, а в теле растёт total, а не count.
  • ❌ Ждём ввод, но нет выхода. while answer != "да", а внутри answer не перезапрашивается — значение не меняется. Проверять истинность условий помогает гайд if, elif и else в Python: условия с примерами.

Когда бесконечный цикл в Python — это норма?

while True сам по себе не ошибка. Так пишут «главный цикл» программы — например, меню или обработчик команд, — который крутится, пока пользователь не решит выйти. Ключ в том, что внутри есть условие выхода через break.

while True:
    command = input("Команда: ")
    if command == "stop":
        break
    print(f"Выполняю: {command}")
Выполняю: ПРИВЕТ

Цикл повторяется бесконечно, но break даёт выход по команде stop. Разница с багом простая: здесь выход предусмотрен и достижим, а в зависшей программе — нет.

Короткие ответы на вопросы

Как остановить зациклившуюся программу?

В терминале нажми Ctrl + C — это прервёт выполнение. В некоторых средах (например, в онлайн-редакторе) есть кнопка «Стоп». Само по себе прерывание безопасно.

Опасен ли while True?

Нет, если внутри есть break или другой выход. while True без выхода — вот что создаёт настоящий бесконечный цикл. Сама конструкция — обычный приём для главного цикла программы.

Как не зациклиться, если известно число повторений?

Используй for с range() вместо while. Тогда счётчик увеличивается автоматически и забыть про него невозможно — цикл гарантированно завершится.

Кот-наставник

— Правило простое: если пишешь while, сразу спроси себя — что в теле сделает условие ложным? Нет ответа — будет бесконечный цикл.

— А если число повторений известно заранее — бери for. С ним зациклиться почти невозможно.

Зациклился? Разберись, почему — на практике!

На SkillPy ты пишешь циклы сам, а AI-наставник замечает бесконечный цикл раньше, чем программа зависнет, и показывает, какое условие не сработало. Он не сверяет с шаблоном, а понимает твой код и объясняет причину.