Learnly
Python с нуля/Глава 4/Урок 3

Как Python работает с типами

Как Python работает с типами

Теперь ты знаешь основные типы. Но в реальных программах типы часто нужно преобразовывать, и это место где новички часто спотыкаются.

Типичная ошибка: смешение типов

Попробуй запустить такой код:

age = input("Сколько тебе лет? ")
next_year = age + 1
print("В следующем году тебе будет:", next_year)

Получишь ошибку: TypeError: can only concatenate str (not "int") to str

Почему? Функция input() всегда возвращает строку, даже если пользователь ввёл число. Python получил строку "25" и попытался прибавить к ней число 1, и не смог.

Преобразование типов

Решение, явно сказать Python какой тип нужен:

age = input("Сколько тебе лет? ")
age = int(age)              # преобразуем строку в целое число
next_year = age + 1
print("В следующем году тебе будет:", next_year)

Или короче:

age = int(input("Сколько тебе лет? "))

Основные функции преобразования

# str → int (строка в целое число)
x = int("42")        # 42
x = int("3.7")       # Ошибка! int не умеет так

# str → float (строка в дробное число)
x = float("3.14")    # 3.14
x = float("42")      # 42.0

# int/float → str (число в строку)
x = str(100)         # "100"
x = str(3.14)        # "3.14"

# int → float и обратно
x = float(5)         # 5.0
x = int(3.9)         # 3  (обрезает, не округляет!)

F-строки: удобный способ вставить переменную в текст

Вместо склеивания через + используй f-строки, они читаются намного лучше:

name = "Алекс"
age = 25
city = "Москва"

# Старый способ, неудобно
print("Привет, " + name + "! Тебе " + str(age) + " лет, ты из " + city)

# F-строка, удобно
print(f"Привет, {name}! Тебе {age} лет, ты из {city}")

Буква f перед кавычками говорит Python: "внутри фигурных скобок, переменные, подставь их значения".

Можно даже вставлять выражения:

price = 1500
quantity = 3
print(f"Итого: {price * quantity} рублей")   # Итого: 4500 рублей

Когда что-то идёт не так: читаем ошибки

Python объясняет ошибки, нужно просто научиться их читать:

TypeError: can only concatenate str (not "int") to str

Перевод: "Ошибка типа: можно складывать только строку со строкой, но не с числом"

ValueError: invalid literal for int() with base 10: 'abc'

Перевод: "Ошибка значения: невозможно преобразовать 'abc' в число"

Ошибки, это не страшно. Это подсказки.

💡 Главная мысль: Python строго следит за типами. Перед операцией убедись что типы совместимы, а если нет, используй преобразование. F-строки делают вставку переменных в текст простой и читаемой.