Python для новичковУправление ходом программыЦикл while

Цикл while

Уроки курсаЦикл while

Бесконечный цикл и типичная ошибка

Бесконечный цикл — это не редкий экзотический случай, а очень конкретная ловушка, в которую легко попасть при первом знакомстве с while. Программа запускается, начинает что-то выводить или просто зависает, и не останавливается сама — её приходится прерывать вручную.

Происходит это по одной причине: условие в заголовке while никогда не становится False. Python честно проверяет его перед каждой итерацией, видит True и продолжает. Снова и снова. Без конца.

Самая частая причина — переменная, от которой зависит условие, не изменяется внутри тела цикла. Вот классический пример:

n = 5
while n > 0:
    print(n)

На первый взгляд всё выглядит похоже на обратный отсчёт. Но строки n -= 1 здесь нет. n остаётся равным 5 на каждой итерации, условие n > 0 всегда True, и программа будет выводить 5 бесконечно.

Чтобы исправить, достаточно добавить изменение переменной в тело:

n = 5
while n > 0:
    print(n)
    n -= 1  # теперь n уменьшается и цикл остановится

Есть и второй сценарий: условие составлено так, что его логически невозможно нарушить. Например:

count = 1
while count > 0:
    print(count)
    count += 1

Здесь count честно меняется — растёт. Но условие count > 0 от этого только укрепляется: чем больше count, тем оно истиннее. Цикл никогда не остановится.

Как распознать бесконечный цикл на практике: программа либо выводит одно и то же без остановки, либо просто «зависает» и не возвращает управление. В большинстве сред (IDLE, VS Code, Jupyter) его можно прервать сочетанием клавиш Ctrl+C.

Перед тем как запустить цикл, стоит задать себе два вопроса:

  • Изменяется ли внутри тела та переменная, которая входит в условие?
  • Может ли это изменение в итоге сделать условие ложным?

Если ответ на любой из них «нет» — цикл не остановится.