Форматирование вывода: практические примеры на Python

Раздел: Основы Python -> Операции вывода

В Python существует несколько способов форматирования вывода данных. Каждый из них имеет свои особенности и области применения. Основные варианты описаны далее.

Основные способы форматирования вывода

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

Наиболее эффективным решением являются f-строки (f-strings), доступные с Python 3.6. Они позволяют встраивать выражения прямо в строку, предваряя её буквой f. Например:


name = 'Анна'
age = 25
print(f'Имя: {name}, возраст: {age}')
  

Python вывод (вывод данных на экран в python)

Имя: Анна, возраст: 25

вывод класса python (вывод класса в python)

Внутри фигурных скобок можно использовать любые выражения: арифметические операции, вызовы функций, даже вложенные f-строки (хотя это усложняет читаемость).

Типичные проблемы и ошибки:

  • Если нужно вывести фигурную скобку как символ, её необходимо удвоить: {'{'} и {'}'}.
  • Внутри выражения в f-строке нельзя использовать обратную косую черту.
  • При использовании f-строк с многострочными строками (тройные кавычки) нужно следить за отступами внутри выражений.

Как форматировать строку с использованием именованных аргументов и сложных шаблонов?

Метод str.format() предоставляет гибкие возможности. Строка содержит фигурные скобки с указанием позиций или имён. Пример:


template = 'Привет, {name}! Тебе {age} лет.'
print(template.format(name='Петр', age=30))
  

форматы вывода python (форматы вывода в python)

Привет, Петр! Тебе 30 лет.

Позиции можно указывать явно: '{0} {1}'.format(a, b). Метод format() удобен при работе со словарями: '{name}'.format(**data).

Возможные проблемы:

  • Ошибка KeyError, если указано имя, отсутствующее в аргументах.
  • При использовании позиционных аргументов легко перепутать порядок.
  • Для вывода фигурной скобки нужно использовать двойные скобки: {'{'} и {'}'}.

Как применить форматирование в стиле языка C (оператор %)?

Старый способ, унаследованный от C. Строка содержит спецификаторы, такие как %s (строка), %d (целое число), %f (число с плавающей точкой). Пример:


name = 'Мария'
score = 95
print('Студент %s набрал %d баллов.' % (name, score))
  
Студент Мария набрал 95 баллов.

Этот метод менее гибкий, но может встречаться в старом коде. Для вывода знака процента нужно удвоить его: %%.

Распространённые ошибки:

  • Несоответствие типов: если в шаблоне указан %d, а передана строка, возникает TypeError.
  • Неверное количество аргументов слева и справа от оператора %.
  • Трудности с форматированием чисел с плавающей точкой (контроль точности через %.2f).

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

Функция print() имеет параметры sep и end. Параметр sep определяет строку-разделитель между аргументами (по умолчанию пробел), а end - строку после последнего вывода (по умолчанию перевод строки). Пример:


print(1, 2, 3, sep=', ', end='!')
  
1, 2, 3!

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

Ограничения:

  • Все аргументы преобразуются в строку через str(), поэтому настройка точности чисел недоступна.
  • Нельзя вывести значения с разным форматированием в одном вызове.

Выбор подходящего способа зависит от задачи. Для простых вставок переменных - f-строки. Для сложных шаблонов с переиспользованием - format(). Для совместимости со старым кодом - %. Для настройки разделителей - параметры print.

Дополнительные примеры форматирования вывода

1. Форматирование чисел в f-строках

Пример

value = 1234.56789
print(f'Два знака после запятой: {value:.2f}')
print(f'Выравнивание по правому краю, ширина 10: {value:>10.2f}')
print(f'Процентное представление: {0.185:.2%}')
Два знака после запятой: 1234.57
Выравнивание по правому краю, ширина 10:    1234.57
Процентное представление: 18.50%

Пояснение: спецификатор .2f ограничивает дробную часть двумя знаками; >10 выравнивает вправо на поле шириной 10; .2% выводит число как проценты с двумя знаками.

2. Форматирование дат и времени

Пример

from datetime import datetime
now = datetime.now()
print(f'Сегодня: {now:%Y-%m-%d}')
print(f'Время: {now:%H:%M:%S}')
# Использование format() с теми же кодами
print('Дата: {:%d.%m.%Y}'.format(now))
Сегодня: 2025-03-30
Время: 12:34:56
Дата: 30.03.2025

Пояснение: в f-строках и format() можно использовать директивы форматирования даты, аналогичные strftime.

3. Выравнивание и заполнение символами

Пример

text = 'test'
print(f'{text:>10}')
print(f'{text:_<10}')
print(f'{text:=^10}')
# То же через format()
print('{:>10}'.format(text))
print('{:_<10}'.format(text))
print('{:=^10}'.format(text))
      test
test______
===test===
      test
test______
===test===

Пояснение: символ после двоеточия (>, <, ^) задаёт выравнивание; символ перед ним - символ заполнения.

4. Разделители разрядов чисел

Пример

big_number = 1234567890
print(f'С разделителями: {big_number:,}')
print(f'В виде: {big_number:_}')
# format()
print('С разделителями: {:,}'.format(big_number))
С разделителями: 1,234,567,890
В виде: 1_234_567_890
С разделителями: 1,234,567,890

Пояснение: запятая или подчёркивание после двоеточия включает группировку разрядов.

5. Вывод таблицы с выравниванием через f-строки

Пример

students = [('Alice', 90), ('Bob', 85), ('Charlie', 95)]
for name, score in students:
    print(f'{name:10}{score:3}')
Alice         90
Bob          85
Charlie      95

Пояснение: f-строки позволяют задавать ширину поля для каждого столбца, что удобно для форматирования таблиц.

6. Применение словаря с методом format()

Пример

student = {'name': 'Иван', 'scores': [5, 4, 5]}
template = 'Студент {name} имеет оценки: {scores}'
result = template.format(**student)
print(result)
# Можно также использовать f-строки
print(f"Студент {student['name']} имеет оценки: {student['scores']}")
Студент Иван имеет оценки: [5, 4, 5]
Студент Иван имеет оценки: [5, 4, 5]

Пояснение: оператор ** распаковывает словарь, передавая ключи как именованные аргументы.

7. Вложенные f-строки (не рекомендуется, но возможно)

Пример

x = 10
y = 20
result = f'Сумма равна {f"{x+y}"}'
print(result)
Сумма равна 30

Пояснение: вложенные f-строки могут снижать читаемость, лучше использовать переменные.

8. Экранирование фигурных скобок

Пример

# Для вывода { и } нужно удвоить
print(f'Фигурные скобки: {{ и }}')
# В format()
print('Фигурные скобки: {{ и }}'.format())
Фигурные скобки: { и }
Фигурные скобки: { и }

Пояснение: двойные скобки воспринимаются как литеральные символы.

9. Старый стиль (%): форматирование с кортежем и словарём

Пример

print('Число: %d, строка: %s, дробное: %.2f' % (42, 'ответ', 3.14159))
# Со словарём
data = {'name': 'Алексей', 'score': 88}
print('Студент %(name)s набрал %(score)d баллов' % data)
Число: 42, строка: ответ, дробное: 3.14
Студент Алексей набрал 88 баллов

Пояснение: для словарей используется %(key)format.

Форматы вывода в Python - comments

En
форматы вывода python (python)