Python

Как преобразовать число в строку Python: str, f-строки и форматирование

В Python число и строка — разные типы данных. Число удобно складывать, умножать и сравнивать, а строку удобно выводить, соединять с другим текстом и сохранять в текстовый файл. Поэтому вопрос «как преобразовать число в строку» обычно появляется, когда человек пытается написать что-то вроде text + number и получает ошибку

Для преобразования числа в строку используется функция str()

Короткий ответ

age = 25
text = str(age)

print(text)
print(type(text))

Результат будет таким

25
<class 'str'>

Теперь значение text является строкой. Оно выглядит как число, но для Python это уже текст

Зачем вообще превращать число в строку

Самая частая причина — нужно вывести число рядом с текстом

price = 1500

message = "Цена товара: " + str(price) + " рублей"

print(message)

Без str(price) Python выдаст ошибку, потому что строку и число нельзя просто соединить оператором +

price = 1500

message = "Цена товара: " + price + " рублей"

Такой код сломается, потому что price остается числом

Более удобный вариант через f-строку

В реальном коде вместо ручного соединения строк часто используют f-строки. Это проще читать, особенно когда переменных несколько

price = 1500
count = 3

message = f"Цена товара: {price} рублей, количество: {count}"

print(message)

Внутри f-строки Python сам преобразует число в текст для вывода. При этом переменная price не меняет свой тип: она остается числом, просто в строке отображается как текст

Преобразование int и float

Функция str() работает и с целыми числами, и с дробными

items_count = 7
rating = 4.8

print(str(items_count))
print(str(rating))

Результат

7
4.8

Если дробное число нужно вывести красиво, например с двумя знаками после запятой, лучше использовать форматирование

price = 1499.5

print(f"{price:.2f}")

Результат

1499.50

Как добавить ведущие нули

Иногда число нужно превратить в строку с ведущими нулями: номер заказа, код, месяц, день или номер урока

lesson_number = 7

code = f"{lesson_number:03d}"

print(code)

Результат

007

Здесь число 7 выводится как строка из трех символов. Если цифр не хватает, Python добавляет нули слева

Важно: input уже возвращает строку

Новички часто делают лишнее преобразование после input()

name = input("Введите имя: ")

Переменная name уже является строкой. А вот если пользователь вводит число и вы хотите считать его как число, нужно делать обратное преобразование

age_text = input("Введите возраст: ")
age = int(age_text)

Здесь input() сначала возвращает текст, затем int() превращает этот текст в целое число

Когда нельзя пользоваться числом как строкой

Если вы превратили число в строку, с ним уже нельзя нормально выполнять математические операции

number = 10
text = str(number)

print(text + text)

Результат будет не 20, а 1010, потому что Python соединит две строки

1010

Поэтому правило простое: для расчетов оставляйте число числом, для вывода превращайте в строку только в момент вывода

Мини-практика

Сделайте переменные name, age и city. Возраст храните как число, а затем выведите фразу Динар, 35 лет, город Казань через f-строку

После этого попробуйте сделать то же самое через str(age) и обычное сложение строк. Так вы увидите разницу между современным удобным способом и ручным преобразованием

Частые ошибки

Ошибка первая: соединять строку и число без преобразования. Если видите ошибку TypeError: can only concatenate str, проверьте, не пытаетесь ли вы сложить текст и число

Ошибка вторая: превращать число в строку слишком рано. Если дальше нужны расчеты, храните значение как int или float

Ошибка третья: думать, что f-строка меняет тип переменной. Она просто подставляет значение в текст, сама переменная остается прежней

Ошибка четвертая: путать str() и int(). str() делает текст, int() делает целое число из подходящей строки

Что почитать дальше по Python

Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x