← Все вопросы

Как правильно использовать input() и какие подводные камни нужно знать?

Задан 2 месяца назад23 просмотров1 ответ
0

Что возвращает функция input()? Как преобразовать ввод пользователя в число? Что произойдет, если пользователь введет не число, а вы попытаетесь преобразовать в int()? Как обработать эту ситуацию?

1 ответ

1

Главное, что надо знать: input() возвращает строку. Всегда. Ввели 42 — получили '42', и '42' + 1 уронит программу.

Дальше цепочка следствий:

age = int(input('Возраст: '))   # упадёт с ValueError, если ввели «двадцать»

Поэтому ввод числа у меня всегда обёрнут в цикл с проверкой:

while True:
    raw = input('Возраст: ').strip()
    try:
        age = int(raw)
        break
    except ValueError:
        print('Нужно число, попробуйте ещё раз')

Камни, о которые бился сам: пробелы по краям (лечатся strip), пустой ввод по Enter (тоже ValueError), дробные с запятой вместо точки — привычка из экселя, лечится float(raw.replace(',', '.')). И мелочь, которую сначала не замечаешь: подсказку input печатает без перевода строки, так что пробел в конце 'Возраст: ' — не опечатка, а косметика.

Ваш ответ

, чтобы ответить на вопрос.