Ввод от пользователя и преобразование типов
Уроки курсаВвод от пользователя и преобразование типов
Приведение типа: int() и float()
Мы уже знаем, что input() всегда возвращает строку. Проблема возникает, когда нужно что-то посчитать с введённым значением.
Попробуйте такой код:
a = input('Первое число: ')
b = input('Второе число: ')
print(a + b)
Если пользователь введёт 3 и 5, на экране появится 35, а не 8. Это не баг Python — это ожидаемое поведение: оператор + для строк означает конкатенацию, то есть склейку. Строка '3' плюс строка '5' — это строка '35'.
Чтобы получить число, строку нужно явно преобразовать. Для этого есть две функции:
int()— превращает строку в целое число:int('25')даёт25float()— превращает строку в число с плавающей точкой:float('3.14')даёт3.14
Это и называется приведением типа (type casting) — вы явно говорите Python, как интерпретировать значение.
На практике int() и float() оборачивают вызов input() прямо при присваивании:
age = int(input('Введите возраст: '))
price = float(input('Цена товара: '))
Что здесь происходит по шагам: сначала вычисляется внутренний вызов — input() возвращает строку, например '25'. Затем эта строка передаётся в int(), который возвращает число 25. И уже это число сохраняется в переменную age.
Теперь с переменной можно спокойно делать арифметику:
a = int(input('Первое число: '))
b = int(input('Второе число: '))
print(a + b)
При вводе 3 и 5 программа выведет 8 — потому что теперь a и b это числа, а не строки.
Выбор между int() и float() зависит от задачи: если ожидаете целое число (возраст, количество, год) — используйте int(). Если значение может быть дробным (цена, вес, температура) — float(). Стоит учесть, что float() принимает и целые значения без проблем: float('5') вернёт 5.0. А вот int() не умеет напрямую конвертировать строку с точкой: int('3.14') вызовет ошибку, даже если число выглядит корректным.
