Глава 10 · Немного автоматизации!

Проверка ввода в цикле

Один из самых практичных паттернов while — переспрашивать пользователя, пока введённое не станет подходящим.

Проблема: пользователь может ввести что угодно

Программа из главы 9 ожидала число от пользователя — но что, если он введёт слово или оставит поле пустым? Цикл while позволяет переспрашивать, пока ввод не станет подходящим:

proverka_vvoda.py
vozrast = input("Введите возраст: ")
while not vozrast.isdigit():
    print("Нужно ввести число!")
    vozrast = input("Введите возраст: ")

vozrast = int(vozrast)
print("Спасибо! Вам", vozrast, "лет")
СТАРТполучить первый вводввод не число?ДАсообщить об ошибкеполучить новый вводназадНЕТКОНЕЦ
Цикл проверки: переспрашивать, пока ввод не станет подходящим
isdigit() — простая, но ограниченная проверка
str.isdigit() проверяет, что строка состоит только из цифр — этого достаточно для целых положительных чисел, но не отличает "-5" (отрицательное число) или "3.5" (дробное) от некорректного ввода. Более надёжный способ проверки — конструкция try/except — мы изучим её в следующих главах; сейчас достаточно уметь проверять целые положительные числа.

Ограничение количества попыток

Иногда бесконечно переспрашивать не годится — разумно ограничить число попыток:

proverka_s_limitom.py
popytki = 0
max_popytok = 3

while popytki < max_popytok:
    vozrast = input("Введите возраст: ")
    if vozrast.isdigit():
        print("Принято:", vozrast)
        break
    print("Это не похоже на число.")
    popytki += 1
else:
    print("Слишком много неверных попыток.")
Здесь снова пригодился loop-else
Блок else у while выполнится, только если попытки закончились без успешного break — ровно то, что нужно для сообщения «слишком много неверных попыток».
Практика: проверка ввода в цикле
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →