Бесконечный цикл в Python — это цикл while, который никогда не завершается: программа «зависает» и продолжает работать без конца. Причина почти всегда одна — условие цикла остаётся истинным, потому что переменная в нём не меняется. Ниже разберём, как быстро остановить зациклившуюся программу и как починить сам цикл.
Коротко
Как остановить прямо сейчас: нажми Ctrl + C в терминале — программа прервётся. Как починить: убедись, что переменная из условия while меняется внутри цикла и рано или поздно делает условие ложным. Чаще всего забывают строку вроде x += 1 — счётчик не растёт, x < 5 навсегда остаётся True, и цикл не выходит.
Почему программа на Python зацикливается?
Цикл while проверяет условие перед каждым повторением. Пока условие истинно (True), тело выполняется снова и снова. Если ничто внутри цикла не приближает условие к ложному значению, выхода не будет — это и есть бесконечный цикл.
x = 0
while x < 5: # x всегда 0 — условие всегда True
print(x) # печатает 0 снова и снова, без концаПеременная x не меняется в теле цикла, поэтому проверка x < 5 каждый раз возвращает True. Python честно выполняет то, что написано, — печатает 0 до бесконечности.
Как остановить и как исправить
Чтобы цикл завершился, переменную из условия нужно менять внутри тела:
x = 0
while x < 5:
print(x)
x += 1 # теперь x растёт и дойдёт до 50 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-наставник замечает бесконечный цикл раньше, чем программа зависнет, и показывает, какое условие не сработало. Он не сверяет с шаблоном, а понимает твой код и объясняет причину.
