Не понятная ошибка в коде 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 шт):

Автор решения: GameLinux

Зачем нужен += 1? Без этого нормально выводится отображение очков. Если с этим связана какая-то логика, то её нужно прописать отдельно, а не в print.

→ Ссылка
Автор решения: MarianD

Вместо неправильных выражений типа

{user_stats: += 1}

(в f-строках параметров функций print())

просто перед каждой такой командой print(...) измените значение переменной user_stats присвоением

user_stats += 1

и затем в самой команде print(...) используйте только {user_stats}.

(Подобным образом, конечно, для всех {user_stats: -= 1}.)


Объяснение:

После двоеточия (:) ожидается спецификация формата, например 05d,
а ваше += 1 или -= 1 не является правильной спецификацией.

→ Ссылка