← Все вопросы
Как правильно использовать input() и какие подводные камни нужно знать?
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 печатает без перевода строки, так что пробел в конце 'Возраст: ' — не опечатка, а косметика.
Ваш ответ
, чтобы ответить на вопрос.