Приведение типов данных: преобразование между типами

Зачем нужно преобразовывать типы данных? 🔄

В 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("Ошибка: это не число!")

Важные нюансы ⚠️

  1. Потеря данных: При преобразовании floatint дробная часть отбрасывается: python print(int(9.99)) # 9 (не округление!)

  2. Логические значения: bool — подкласс int, поэтому: python print(True + 1) # 2 (True == 1, False == 0)

  3. Особенности строк: Пустая строка — False, любая другая — True: python print(bool(" ")) # True (пробел — это символ!)

Для углубленного изучения типов данных загляните на YouTube-канал Данилы Бежина: https://www.youtube.com/@DanilaBezhin. Там есть отличные разборы!


Закрепляем на практике ️

Попробуйте решить задачи:

  1. Преобразуйте список чисел [1, 2, 3] в строку "1, 2, 3".
  2. Напишите код, который принимает два числа как строки (например, "12" и "3") и выводит их сумму.
  3. Создайте функцию, которая проверяет, можно ли преобразовать введенную строку в целое число.
Скрыть рекламу навсегда

🎥 YouTube: программирование простым языком

Канал, где я спокойно и по шагам объясняю сложные темы — без заумных терминов и лишней теории.

Подходит, если раньше «не заходило», но хочется наконец понять.

▶️ Смотреть курсы на YouTube