Как преобразовать число в строку в Python: примеры и объяснения

Раздел: Строки -> Объектно-ориентированное программирование

Преобразование чисел в строки в Python: методы и примеры

Самый эффективный и современный способ преобразовать число в строку - использование f-строк (f-strings), появившихся в Python 3.6. Этот метод обеспечивает высокую читаемость и производительность. Для базового преобразования достаточно поместить число в фигурные скобки внутри строки с префиксом f.

number = 1234
result = f'{number}'
print(result)  # 1234
print(type(result))  # <class 'str'>

атрибуты класса python (атрибуты классов и объектов в python)

1234
<class 'str'>

библиотека классов python (библиотека классов в python)

Преимущества: лаконичность, возможность сразу задать формат (например, количество знаков после запятой).

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

Функция str() - самый очевидный способ. Она принимает любой объект и возвращает его строковое представление.

value = 42
text = str(value)
print(text, type(text))  # 42 <class 'str'>

метод объекта python (методы объектов в python)

42 <class 'str'>

Python структура объекта (структура объекта в python)

Типичная ошибка: попытка применить str() к числам, уже записанным как строки. Функция просто вернёт ту же строку, что может привести к путанице. Всегда проверяйте тип исходных данных.

text_number = '123'
print(str(text_number))  # '123' - не число, а строка

Python создание объектов (создание объектов в python)

Как задать точность вывода при преобразовании чисел с плавающей точкой?

Метод format() позволяет управлять форматированием с помощью спецификаций. Например, {:.2f} оставляет два знака после запятой.

pi = 3.1415926535
formatted = '{:.2f}'.format(pi)
print(formatted)  # 3.14

Self object python (объект self в python)

3.14

Object attribute python (атрибуты объекта в python)

Проблема: если указать неверный спецификатор (например, d для дробного числа), возникнет ValueError. Убедитесь, что спецификатор соответствует типу числа.

# '{:d}'.format(3.14)  # ValueError: Unknown format code 'd' for object of type 'float'

Python call method (вызов метода в python)

Как использовать старый стиль форматирования чисел?

Оператор % (процент) - наследие C-стиля. Применяется, когда нужна обратная совместимость или в коде, написанном до версии 3.0.

count = 5
message = '%d яблок' % count
print(message)  # 5 яблок

Python класс данных (класс данных в python)

5 яблок

Class method python (методы классов в python)

Распространённая ошибка: несоответствие количества аргументов числу спецификаторов. Приводит к TypeError: not enough arguments for format string. Используйте кортеж для нескольких значений.

# '%d и %d' % (1, 2, 3)  # TypeError

Python object methods (методы объектов в python)

Как вывести число с разделителями разрядов (пробелами или запятыми)?

В Python 3.6+ можно использовать встроенную возможность форматирования с символом _ или , в качестве разделителя. Для чисел с плавающей точкой разделитель ставится между целой и дробной частью.

large = 1234567890
print(f'{large:_}')  # 1_234_567_890
print(f'{large:,}')  # 1,234,567,890

класс python определение (определение классов в python)

1_234_567_890
1,234,567,890

Self method python (параметр self в методах python)

Проблема: на разных локалях разделитель может отличаться. Для автоматической локализации используйте модуль locale.

import locale
locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')
print(locale.format_string('%d', large, grouping=True))  # 1 234 567 890

приватные атрибуты python (приватные атрибуты в python)

Как получить прописное представление числа на русском (сто двадцать три)?

Стандартная библиотека Python не содержит функций для преобразования числа в текст прописью. Для этого используется сторонний пакет num2words.

from num2words import num2words
text = num2words(123, lang='ru')
print(text)  # сто двадцать три

создание типов python (создание пользовательских типов данных в python)

сто двадцать три

Возможные сложности: пакет необходимо установить (pip install num2words). Для русского языка требуется поддержка lang='ru'. Не все версии пакета корректно обрабатывают крупные числа (миллионы, миллиарды). Проверяйте актуальность.

- Get set python (геттеры и сеттеры в python)
- Python имя метода (имя метода в python)
- Python print self (использование self в print python)

Расширенные примеры преобразования чисел в строки

Использование спецификаторов формата для разных числовых типов

Python поддерживает множество спецификаторов: d (целое), f (фиксированная точка), e (экспоненциальная форма), g (общий), x (шестнадцатеричное), o (восьмеричное), b (двоичное).

Пример
n = 255
print(f'{n:d}')     # 255
print(f'{n:x}')     # ff
print(f'{n:#x}')    # 0xff
print(f'{n:o}')     # 377
print(f'{n:b}')     # 11111111
print(f'{n:#b}')    # 0b11111111
255
ff
0xff
377
11111111
0b11111111

Преобразование комплексных чисел

Комплексные числа преобразуются в строку с помощью str() или f-строк. Можно управлять форматированием действительной и мнимой частей.

Пример
z = 3 + 4j
print(str(z))               # (3+4j)
print(f'{z.real:.1f} + {z.imag:.1f}j')  # 3.0 + 4.0j
(3+4j)
3.0 + 4.0j

Форматирование с выравниванием и заполнением

Можно задать ширину поля, выравнивание (левое, правое, по центру) и символ заполнения.

Пример
value = 42
print(f'{value:>10}')    # '        42'
print(f'{value:<10}')    # '42        '
print(f'{value:^10}')    # '    42    '
print(f'{value:0=10}')   # '0000000042'
        42
42        
    42    
0000000042

Использование метода format() с именованными аргументами

Позволяет повторно использовать одно и то же число в разных форматах в одной строке.

Пример
temp = 36.6
msg = 'Температура: {temp:.1f}°C или {temp:.2f}°C'.format(temp=temp)
print(msg)  # Температура: 36.6°C или 36.60°C
Температура: 36.6°C или 36.60°C

Преобразование Decimal и Fraction в строку

Типы из модулей decimal и fractions также преобразуются стандартными методами.

Пример
from decimal import Decimal
from fractions import Fraction
d = Decimal('3.14159')
f = Fraction(22, 7)
print(str(d))   # 3.14159
print(str(f))   # 22/7
# Форматирование с точностью
print(f'{d:.2f}')  # 3.14
print(f'{float(f):.4f}')  # 3.1429
3.14159
22/7
3.14
3.1429

Применение repr() для чисел с плавающей точкой

repr() возвращает такое строковое представление, которое при передаче в eval() восстановит исходное число (с точностью).

Пример
import math
print(repr(math.pi))  # '3.141592653589793'
print(str(math.pi))   # '3.141592653589793' (в большинстве версий одинаково)
3.141592653589793
3.141592653589793

Однако для некоторых чисел разница может быть заметна:

Пример
a = 0.1
print(repr(a))  # '0.1'
print(str(a))   # '0.1' - но на самом деле хранится не точно 0.1

Преобразование научной нотации с большими и малыми числами

Для очень больших или малых чисел f-строки по умолчанию используют научный формат.

Пример
big = 1e15
small = 5e-10
print(f'{big}')     # 1e+15
print(f'{small}')   # 5e-10
# Принудительный фиксированный формат
print(f'{big:.0f}') # 1000000000000000
1e+15
5e-10
1000000000000000

Использование Template из модуля string

Шаблонные строки с заменой через $ - альтернативный способ, безопасный для пользовательского ввода.

Пример
from string import Template
t = Template('$count предметов на складе')
msg = t.substitute(count=42)
print(msg)  # 42 предметов на складе
42 предметов на складе

Преобразование строки обратно в число (дополнительно)

Иногда полезно знать, как проверять корректность преобразования. Используется try/except с int() или float().

Пример
def safe_convert(s):
    try:
        return int(s)
    except ValueError:
        try:
            return float(s)
        except ValueError:
            return None

print(safe_convert('123'))    # 123
print(safe_convert('3.14'))   # 3.14
print(safe_convert('abc'))    # None

Число в текст в Python - comments

En
Python число в текст (python)