Цикл while

Цикл while

Вы уже умеете принимать решения с помощью if/elif/else. Следующий шаг — повторение: выполнять одни и те же действия многократно, пока выполняется какое-то условие. Для этого в Python существуют циклы. Начнём с самого фундаментального — цикла while.

Синтаксис while

while условие:
    # тело цикла — выполняется, пока условие True

Python проверяет условие перед каждой итерацией. Если условие True — выполняет тело. Если False — выходит из цикла. Если условие ложно с самого начала — тело не выполняется ни разу.

count = 1

while count <= 5:
    print(count)
    count += 1

print("Готово")

Вывод:

1
2
3
4
5
Готово

Разбор: count начинается с 1. На каждой итерации выводим count и увеличиваем на 1. Когда count становится 6 — условие count <= 5 ложно, цикл завершается.

Обязательное изменение условия

Самая распространённая ошибка с whileбесконечный цикл: условие никогда не становится ложным.

# ОПАСНО: бесконечный цикл — не запускайте без Ctrl+C
x = 1
while x > 0:
    print(x)
    # x не изменяется! условие всегда True

Всегда убеждайтесь, что в теле цикла что-то изменяет переменную из условия, приближая его к False.

Цикл с вводом пользователя

while особенно удобен, когда нужно продолжать работу, пока пользователь не введёт нужное значение:

password = ""
while password != "secret":
    password = input("Введите пароль: ")

print("Доступ разрешён")

Цикл продолжается бесконечно до тех пор, пока пользователь не введёт "secret". После этого условие становится ложным, и программа выводит сообщение.

Счётчики и накопители

while отлично подходит для накопления значений:

total = 0
n = 1

while n <= 10:
    total += n   # суммируем числа от 1 до 10
    n += 1

print(f"Сумма 1..10 = {total}")   # 55

Флаговый паттерн

Иногда удобно управлять циклом через булевую переменную-флаг:

is_running = True

while is_running:
    command = input("Команда (quit для выхода): ")
    if command == "quit":
        is_running = False
    else:
        print(f"Вы ввели: {command}")

print("Программа завершена")

Флаг is_running делает намерение явным: цикл продолжается, пока «программа работает».

while с числовыми алгоритмами

Многие математические алгоритмы естественно выражаются через while:

# Поиск первой степени 2, превышающей 1000
n = 1
power = 0

while n <= 1000:
    n *= 2
    power += 1

print(f"2^{power} = {n} > 1000")
# Алгоритм Евклида: НОД двух чисел
a = 48
b = 18

while b:       # пока b не равно 0 (truthy)
    a, b = b, a % b

print(f"НОД = {a}")  # 6

Алгоритм Евклида — классический пример, где while b: означает «пока b ненулевое».

Угадай число: классический пример

Соберём классическую игру «угадай число» — она хорошо иллюстрирует возможности while:

secret = 42
attempts = 0

while True:   # специальный приём: бесконечный цикл с явным break
    guess = int(input("Угадай число (1-100): "))
    attempts += 1

    if guess < secret:
        print("Больше!")
    elif guess > secret:
        print("Меньше!")
    else:
        print(f"Правильно! За {attempts} попытки.")
        break   # выход из цикла — разберём в уроке 4-4

Конструкция while True: создаёт цикл, который теоретически не заканчивается. Выход осуществляется через break при правильном ответе. Это идиоматический Python-паттерн для циклов, где условие выхода проверяется внутри тела.

Визуализация выполнения

Чтобы лучше понять, как работает while, полезно «прокрутить» выполнение вручную:

i = 0
total = 0

# Итерация 1: i=0 → 0 <= 4 → True → total=0, i=1
# Итерация 2: i=1 → 1 <= 4 → True → total=1, i=2
# Итерация 3: i=2 → 2 <= 4 → True → total=3, i=3
# Итерация 4: i=3 → 3 <= 4 → True → total=6, i=4
# Итерация 5: i=4 → 4 <= 4 → True → total=10, i=5
# Проверка:   i=5 → 5 <= 4 → False → выход
while i <= 4:
    total += i
    i += 1

print(total)  # 10

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

Проверь себя

Сколько раз выполнится тело цикла?

n = 10
while n > 0:
    n -= 3

Шаги: 10 → 7 → 4 → 1 → -2 (условие > 0 ложно). Тело выполнится 4 раза.

Итог

  • while условие: повторяет тело, пока условие True.
  • Перед каждой итерацией Python проверяет условие. Если ложно с самого начала — тело не выполняется.
  • В теле обязательно должно изменяться что-то, влияющее на условие — иначе получится бесконечный цикл.
  • while подходит для: ввода пользователя с повтором, алгоритмов с неизвестным числом шагов, флаговых паттернов.
  • Управление флагом (is_running = True/False) делает намерение цикла явным.

В следующем уроке познакомимся с циклом for — более компактным способом перебирать последовательности.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике