❌ Ошибка 1: несоответствие типов в C-style
name = "Alice"
age = 30
print("My name is %d and I am %s years old." % (name, age))
# TypeError: %d format: a real number is required, not str
Почему возникает: спецификатор %d ожидает число, а %s — строку. Порядок аргументов должен совпадать с порядком спецификаторов.
✅ Исправление
print("My name is %s and I am %d years old." % (name, age))
Лучше сразу используйте f-string:
print(f"My name is {name} and I am {age} years old.")
❌ Ошибка 2: забытый префикс f
name = "Alice"
print("My name is {name}")
# My name is {name} — подстановки не произошло
Почему возникает: без префикса f фигурные скобки воспринимаются как обычный текст.
✅ Исправление
print(f"My name is {name}")
❌ Ошибка 3: фигурные скобки в f-string
print(f"{ {'a': 1} }")
# SyntaxError: f-string expression part cannot include '{'
Почему возникает: внутри выражения f-string нельзя использовать литеральные фигурные скобки.
✅ Исправление
d = {'a': 1}
print(f"{d}")
❌ Ошибка 4: путаем округление и отсечение
number = 1234.5678
print(f"{number:.2f}") # 1234.57, а не 1234.56
Почему возникает: спецификатор .2f округляет по правилам арифметики, а не отбрасывает лишние знаки.
✅ Если нужно отсечь
number = 1234.5678
truncated = int(number * 100) / 100
print(f"{truncated:.2f}") # 1234.56
❌ Ошибка 5: не сохранён результат метода выравнивания
text = "hi"
text.rjust(10, '-')
print(f"[{text}]") # [hi] — выравнивание потеряно
Почему возникает: метод rjust() возвращает новую строку, исходная не изменяется.
✅ Исправление
text = "hi"
text = text.rjust(10, '-')
print(f"[{text}]") # [--------hi]
❌ Ошибка 6: неверный синтаксис комбинирования аргументов format()
print("The {0} is {color}.".format(color="blue", "sky"))
# SyntaxError: positional argument follows keyword argument
Почему возникает: позиционные аргументы должны идти до именованных.
✅ Исправление
print("The {0} is {color}.".format("sky", color="blue"))