Приведение типов данных: преобразование между типами
Зачем нужно преобразовывать типы данных? 🔄
В Python данные всегда имеют определенный тип: строка, число, список и т.д. Но что, если нам нужно сложить число и строку? Или превратить список в строку? Вот здесь и пригодится приведение типов!
age = 25
message = "Мне " + str(age) + " лет" # Без str() будет ошибка!
print(message) # Мне 25 лет
Без преобразования int в str Python выдаст ошибку — он не умеет складывать числа и строки «как есть».
Основные функции преобразования ️
Python предоставляет простые и понятные функции для приведения типов:
1. int() — в целое число
Преобразует строку или число с плавающей точкой в целое число (отбрасывает дробную часть).
num_str = "10"
num_int = int(num_str) # "10" → 10
print(num_int + 5) # 15
float_num = 3.99
print(int(float_num)) # 3 (дробная часть отбрасывается)
⚠️ Осторожно! Если строка не содержит число, будет ошибка:
int("10abc") # ValueError: invalid literal for int()
2. float() — в число с плавающей точкой
Работает аналогично int(), но сохраняет дробную часть.
num_str = "3.14"
num_float = float(num_str) # "3.14" → 3.14
print(num_float * 2) # 6.28
3. str() — в строку
Преобразует любой объект в строку. Универсальный «спасатель» при работе с выводом!
price = 99
print("Цена: " + str(price) + " руб.") # Цена: 99 руб.
# Работает даже со списками:
numbers = [1, 2, 3]
print("Список: " + str(numbers)) # Список: [1, 2, 3]
4. bool() — в логическое значение
Позволяет проверить «истинность» объекта.
print(bool(1)) # True (любое число ≠ 0)
print(bool(0)) # False
print(bool("Hello")) # True (непустая строка)
print(bool("")) # False (пустая строка)
Неочевидные преобразования
Некоторые приведения типов работают не так, как кажется на первый взгляд:
Список ↔ Строка
list()разбивает строку на символы:
word = "привет"
print(list(word)) # ['п', 'р', 'и', 'в', 'е', 'т']
- Объединить список в строку можно через
join():
letters = ['П', 'и', 'т', 'о', 'н']
print("".join(letters)) # Питон
Число ↔ Список
Такого преобразования нет «из коробки», но можно сделать вот так:
number = 12345
digits = [int(d) for d in str(number)] # Превращаем число в строку, затем каждый символ в int
print(digits) # [1, 2, 3, 4, 5]
Практические примеры из жизни 💼
Пример 1: Ввод пользователя
Функция input() всегда возвращает строку. Для чисел нужно преобразование:
user_age = input("Сколько вам лет? ") # "25" (это строка!)
years_to_100 = 100 - int(user_age)
print(f"До 100 лет вам осталось: {years_to_100} лет")
Пример 2: Обработка данных
Допустим, мы читаем числа из файла, где они записаны как строки:
data = ["10", "20", "30"]
total = sum(int(x) for x in data) # Преобразуем все элементы в int
print(total) # 60
Пример 3: Проверка ввода
Комбинируем try-except с приведением типов для обработки ошибок:
user_input = input("Введите число: ")
try:
num = float(user_input)
print(f"Вы ввели: {num}")
except ValueError:
print("Ошибка: это не число!")
Важные нюансы ⚠️
-
Потеря данных: При преобразовании
float→intдробная часть отбрасывается:python print(int(9.99)) # 9 (не округление!) -
Логические значения:
bool— подклассint, поэтому:python print(True + 1) # 2 (True == 1, False == 0) -
Особенности строк: Пустая строка —
False, любая другая —True:python print(bool(" ")) # True (пробел — это символ!)
Для углубленного изучения типов данных загляните на YouTube-канал Данилы Бежина: https://www.youtube.com/@DanilaBezhin. Там есть отличные разборы!
Закрепляем на практике ️
Попробуйте решить задачи:
- Преобразуйте список чисел
[1, 2, 3]в строку"1, 2, 3". - Напишите код, который принимает два числа как строки (например,
"12"и"3") и выводит их сумму. - Создайте функцию, которая проверяет, можно ли преобразовать введенную строку в целое число.