Не понятная ошибка в коде ValueError: Invalid format specifier
вот такой вот код:
class Games:
def knb(self):
user_stats = 1
print(f"Добро пожаловать в игру: Камень, ножницы, бумага.\nТебе нужно набрать 10 очков.\nТвои очки: {user_stats}")
while True:
tmp = ["камень", "ножницы", "бумага"]
u = input("выбери: (к/н/б)")
c = random.choice(tmp)
if u == "к" and c == "камень":
print(f"бот выбрал {c}")
print(f"ничья. Твои очки: {user_stats}")
if u == "к" and c == "ножницы":
print(f"бот выбрал {c}")
print(f"ты победил. Твои очки: {user_stats: += 1}")
if u == "к" and c == "бумага":
print(f"бот выбрал {c}")
print(f"ты проиграл. Твои очки: {user_stats: -= 1}")
if u == "н" and c == "камень":
print(f"бот выбрал {c}")
print(f"ты проиграл. Твои очки: {user_stats: -= 1}")
if u == "н" and c == "ножницы":
print(f"бот выбрал {c}")
print(f"ничья. Твои очки: {user_stats}")
if u == "н" and c == "бумага":
print(f"бот выбрал {c}")
print(f"ты победил. Твои очки: {user_stats: += 1}")
if u == "б" and c == "камень":
print(f"бот выбрал {c}")
print(f"ты победил. Твои очки: {user_stats: += 1}")
if u == "б" and c == "ножницы":
print(f"бот выбрал {c}")
print(f"ты проиграл. Твои очки: {user_stats: -= 1}")
if u == "б" and c == "бумага":
print(f"бот выбрал {c}")
print(f"ничья. Твои очки: {user_stats}")
if user_stats == 10:
print("ты прошёл игру!")
sys.exit()
if user_stats == 0:
print("если твои очки будут меньше 0, то ты проиграешь")
if user_stats < 0:
sys.exit()
выводит уже другую ошибку, т.к я немного видоизменил код, добавив после user_stats ":" по просьбе одного комментатора:
print(f"ты победил. Твои очки: {user_stats: += 1}")
ValueError: Invalid format specifier
Ответы (2 шт):
Зачем нужен += 1? Без этого нормально выводится отображение очков. Если с этим связана какая-то логика, то её нужно прописать отдельно, а не в print.
Вместо неправильных выражений типа
{user_stats: += 1}
(в f-строках параметров функций print())
просто перед каждой такой командой print(...) измените значение переменной user_stats присвоением
user_stats += 1
и затем в самой команде print(...) используйте только {user_stats}.
(Подобным образом, конечно, для всех {user_stats: -= 1}.)
Объяснение:
После двоеточия (:) ожидается спецификация формата, например 05d,
а ваше += 1 или -= 1 не является правильной спецификацией.