Код БарсикОсновы Python
Основы Python›C08 · Теория

Теория · C08

Цикл while и проверка ввода

Разберись в теме, запусти пример и переходи к самостоятельным задачам.

РАЗБИРАЕМ ПО ШАГАМ

От идеи к работающему коду

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

Сразу к запуску примера ↓
Барсик проверяет ответ на каждом круге и показывает выход из цикла.
Барсик проверяет ответ на каждом круге и показывает выход из цикла.
  1. 1Проверка условия
  2. 2Действие и изменение данных
  3. 3Новый круг или выход

1. Как работает повторение

while переводится как «пока». Пока условие истинно, Python выполняет все строки с отступом под ним. Если условие ложно с самого начала, тело не выполнится ни разу.

В примере счётчик начинается с нуля. После печати он увеличивается на единицу. Когда count становится равен 5, проверка count < 5 даёт False. Получаем пять строк, а не бесконечное повторение.

Python
count = 0while count < 5:    print("Привет!", count)    count += 1

2. Повторяем вопрос до допустимого ответа

input возвращает строку, поэтому варианты меню сравниваем со строками. Сначала сохраняем пустой ответ: он не подходит, значит цикл задаст первый вопрос. Каждый следующий ответ снова проверяется.

Выражение choice not in (...) означает «ответа нет среди допустимых вариантов». Не нужно повторять три почти одинаковых сравнения. Условие проверяется перед каждым кругом, включая первый.

Python
choice = ""while choice not in ("1", "2", "3"):    choice = input("Выбери 1, 2 или 3: ").strip()print("Выбран вариант", choice)

3. Остановка через break

break немедленно завершает ближайший цикл. Это удобно, когда причина остановки обнаружилась внутри тела: например, игрок угадал число. После break Python переходит к первой строке после цикла. continue, напротив, пропускает остаток одного круга и возвращается к проверке условия.

Здесь одна допустимая числовая попытка уменьшает счётчик один раз. Пока предполагаем корректный ввод числа; обработку букв вместо числа изучим отдельно в теме ошибок. Запись «значение if условие else другое» выбирает одно из двух значений для print; это краткая форма обычного if / else.

Python
secret = 7attempts = 3while attempts > 0:    guess = int(input("Число от 0 до 15: "))    if not 0 <= guess <= 15:        print("Нужно число от 0 до 15")        continue    attempts -= 1    if guess == secret:        print("Угадал!")        break    print("Больше" if guess < secret else "Меньше")print("Игра окончена")

4. Счётчик, сумма и бесконечный цикл

Счётчик отвечает на вопрос «сколько раз», накопитель — «сколько всего». Оба меняются в теле цикла. В сумме стартуем с 0: прибавление к нулю сохраняет первое значение.

Если данные, от которых зависит условие, никогда не меняются, цикл может не закончиться. При зависании нажми «Остановить» и проверь, достижима ли ложная проверка. Протестируй ввод 0 сразу и несколько чисел перед нулём.

Python
total = 0number = int(input("Число, 0 — закончить: "))while number != 0:    total += number    number = int(input("Следующее число: "))print("Сумма:", total)

Где легко ошибиться

  • Забыть изменить счётчик или прочитать следующий ответ.
  • Уменьшить попытки дважды за один ответ.
  • Поставить break с неверным отступом или за пределами цикла.
Проверь понимание: Сколько раз выполнится while attempts > 0, если attempts сразу равен 0?

Ни разу: условие проверяется до тела и сразу даёт False.

Повторяем ввод до правильного ответа

Запусти пример. Затем измени код или входные данные и проверь, как меняется вывод.

Пример входных данных

нет
пока нет
да

Ожидаемый вывод

Попробуй ещё раз
Попробуй ещё раз
Старт!
main.pyPython · можно менять код

Подготавливаем редактор…

Загрузка Python…

Каждый ответ — с новой строки.

Твой вывод

Здесь появится результат запуска.

Дальше — самостоятельные задачи

  1. Повторять вопрос до выбора 1, 2 или 3
  2. Уменьшать число попыток ровно раз за допустимый ответ
  3. Проверить, что победа прекращает цикл