Урок 10. Преобразование типов
В программировании мы постоянно получаем данные из разных источников: клавиатуры (через input()), файлов, интернета. И очень часто эти данные приходят к нам "в неправильной упаковке". Например, число выглядит как текст. Если мы попытаемся с ним работать, программа сломается.
Зачем менять типы?
Компьютер не умеет умножать слово "15" на число 2. Ему нужно четкое совпадение типов для математики. Процесс превращения одного типа данных в другой называется явным приведением (преобразованием) типов.
4 функции-волшебницы
В Python есть 4 встроенные функции, названия которых совпадают с названиями типов данных. Они работают как конвейер: кладете в скобки сырые данные, а на выходе получаете готовый нужный тип.
| Функция | Что делает? | Пример использования |
|---|---|---|
int() |
Пытается превратить данные в целое число. | int("50") превратит текст "50" в число 50.int(3.99) отбросит дробь и оставит 3. |
str() |
Превращает что угодно в строку (текст). | str(100) превратит число в текст "100".Полезно для старого способа вывода: print("Мне " + str(15) + " лет"). |
float() |
Превращает данные в дробное число. | float("3.14") станет 3.14.float(5) станет 5.0. |
bool() |
Превращает данные в Истину (True) или Ложь (False). | Работает хитро! Любое число, кроме 0, это True. Любой текст (кроме пустого "") — тоже True. |
Симодулятор: Трансформатор типов
Введите данные (число, текст, дробь) и попробуйте пропустить их через разные функции. Посмотрите, в каких случаях Python справится, а в каких — сломается и выдаст ошибку.
Ошибки преобразования (ValueError)
Функции преобразования — не всесильны. Если вы попросите Python превратить текст "Яблоко" в целое число int(), он запаникует и выдаст ошибку ValueError (Ошибка значения).
# ❌ Ошибка! В слове "Привет" нет цифр.
number = int("Привет")
# ❌ Ошибка! int() не умеет читать точки внутри строк.
# Сначала нужно использовать float(), а уже потом int().
number = int("3.14")
Практическое применение: Функция input()
Чаще всего преобразование типов мы делаем сразу при вводе данных с клавиатуры. Напомним, что input() всегда возвращает текст (тип str).
print("--- Калькулятор покупок ---")
# Если не поставить float(), цена будет текстом!
price = float(input("Введите цену товара: "))
# Количество всегда целое, поэтому int()
count = int(input("Сколько штук берем?: "))
total = price * count
print(f"Сумма к оплате: {total} руб.")
Симодулятор: Спаси программу от ошибки
Программист забыл поменять тип данных при вводе. Выберите правильные функции-обертки для input(), чтобы код не сломался.
height = (input("Ваш рост (например 1.75): "))
🧠 Проверь себя
Закрепим понимание:
print(int(3.99))?
Показать правильный ответ
3. Функция int() просто отбрасывает всё, что идет после точки, без математического округления.int("Кот")?
Показать правильный ответ
ValueError (Ошибка значения). Из слова "Кот" невозможно извлечь математическую цифру.str(), если мы используем f-строки?
Показать правильный ответ
filename = "save_" + str(5).