Ввод от пользователя и преобразование типов
Уроки курсаВвод от пользователя и преобразование типов
Ошибка ValueError при некорректном вводе
До этого момента мы предполагали, что пользователь вводит корректное число. Но на практике это не гарантировано: пользователь может ошибиться, ввести текст вместо цифры или поставить запятую вместо точки.
Что происходит в таком случае? Если пользователь вводит двадцать вместо 20, Python выдаст:
age = int(input('Введите возраст: '))
# Пользователь вводит: двадцать
# ValueError: invalid literal for int() with base 10: 'двадцать'
Программа не продолжает работу — она прерывается с сообщением об ошибке. То же произойдёт с float(), если строка не выглядит как число:
price = float(input('Цена: '))
# Пользователь вводит: 3,14 (запятая вместо точки)
# ValueError: could not convert string to float: '3,14'
Ключевая идея простая: int() и float() ожидают строку, которая содержит корректное число — и ничего лишнего. Буквы, запятые вместо точек, пустая строка — всё это вызовет ValueError.
Пока что у нас нет инструмента, чтобы перехватить такую ошибку и попросить пользователя ввести данные заново — это тема отдельного урока про try/except. На данном этапе достаточно понять: ValueError возникает предсказуемо, когда строка не соответствует ожидаемому числовому формату. Это не сбой Python, а явный сигнал о несоответствии типов.
