TypeError: can only concatenate str (not "int") to str — как сложить строку и число?
Хочу вывести «Тебе 10 лет», склеиваю строку с числом через +, а получаю TypeError: can only concatenate str (not "int") to str. Почему нельзя складывать строку и число и как правильно их объединить?
2 ответа
Python не складывает строку с числом, потому что + для строк — это склейка, а для чисел — сложение, и он не угадывает, что вы хотели. Нужно привести типы вручную.
Ошибка:
age = 10
print("Тебе " + age + " лет") # TypeError
Способ 1 — f-строка (самый удобный):
age = 10
print(f"Тебе {age} лет")
Способ 2 — превратить число в строку через str():
print("Тебе " + str(age) + " лет")
Способ 3 — отдать аргументы print через запятую (он сам поставит пробелы):
print("Тебе", age, "лет")
Обратная ситуация — если вы реально хотите сложить два числа, а одно пришло из input() (там всегда строка), то приведите его к числу: int(x) + int(y). Правило простое: + работает либо «строка + строка», либо «число + число», но не вперемешку.
Запомните по типам: str + str = склейка, int + int = сумма, а str + int = ошибка. Если видите эту ошибку — найдите место с +, посмотрите, что слева и справа, и приведите «лишний» тип через str() или int(). В современном Python проще всего f-строки: f"{a}{b}".