f-строки и форматирование вывода
f-строка — строка с буквой f перед кавычкой. Всё, что стоит в ней в фигурных скобках, Python вычисляет и подставляет в текст:
name = "Аня"
score = 9.456
print(f"{name}: {score:.1f} баллов")
print(f"Через год будет {15 + 1} лет")Аня: 9.5 баллов
Через год будет 16 летПосле значения через двоеточие можно указать формат: :.1f — один знак после точки. Число при этом округляется только для вывода, сама переменная не меняется.
Основные форматы
Квадратные скобки в примере нужны, чтобы были видны пробелы:
n = 42
x = 3.14159
s = "Минск"
print(f"[{x:.2f}]")
print(f"[{n:6}]")
print(f"[{n:<6}]")
print(f"[{s:>8}]")
print(f"[{s:^9}]")
print(f"[{n:06}]")
print(f"[{1234567:,}]")
print(f"[{1234567:_}]")
print(f"[{0.256:.1%}]")
print(f"[{n:b}] [{n:x}]")[3.14]
[ 42]
[42 ]
[ Минск]
[ Минск ]
[000042]
[1,234,567]
[1_234_567]
[25.6%]
[101010] [2a]| Формат | Что делает |
|---|---|
:.2f | два знака после точки |
:6 | ширина поля 6 знаков; числа прижимаются вправо, строки влево |
:<6, :>6, :^6 | прижать влево, вправо, по центру |
:06 | дополнить число нулями слева до 6 знаков |
:, и :_ | разделить тысячи запятой или подчёркиванием |
:.1% | умножить на 100 и вывести со знаком процента |
:b, :x | в двоичной и шестнадцатеричной системе |
Ширину и точность можно сочетать: :8.2f — восемь знаков всего, из них два после точки.
Таблица со столбцами
goods = [("Хлеб", 1.45), ("Молоко", 2.3), ("Сыр", 12.9)]
for name, price in goods:
print(f"{name:<10}{price:>6.2f}")Хлеб 1.45
Молоко 2.30
Сыр 12.90Название прижато влево в поле из 10 знаков, цена — вправо в поле из 6 знаков с двумя знаками после точки, поэтому столбцы ровные.
Тысячи через пробел
В русских текстах тысячи разделяют пробелом. Готового формата для этого нет, но можно заменить запятую:
total = 1234567
print(f"{total:,}".replace(",", " "))1 234 567Проверка значения: знак =
Знак = после выражения выводит и само выражение, и его значение — удобно при поиске ошибок:
a = 7
b = 3
print(f"{a * b = }")a * b = 21Подводные камни
- Кавычки внутри скобок. До Python 3.12 внутри фигурных скобок нельзя использовать те же кавычки, что снаружи:
f"{d["name"]}"работает только в 3.12 и новее. Чтобы код работал везде, внутри берите другие кавычки:f"{d['name']}". - Фигурные скобки как текст. Чтобы вывести саму скобку, её удваивают:
f"{{x}}"выведет{x}. - Забытая буква f. Без
fстрока"{name}"так и выведется с фигурными скобками — ошибки не будет.
Старые способы
В чужих программах встречаются способы, появившиеся раньше f-строк. Они работают и сейчас:
name = "Аня"
age = 15
print("{} — {} лет".format(name, age))
print("%s — %d лет" % (name, age))
print("Цена: {:.2f}".format(2.5))Аня — 15 лет
Аня — 15 лет
Цена: 2.50Форматы после двоеточия в format те же, что в f-строках. В новых программах проще писать f-строки. Об округлении чисел — в справке Как округлить число.