TypeError: unsupported operand type(s) for +: 'function' and 'int'

Создаю игру и когда хочу вызвать переменную вызывается функция. Код ошибки:

Traceback (most recent call last):
  File "C:\Game\main.py", line 60, in <module>
    game_loop(score)
  File "C:\Game\main.py", line 7, in game_loop
    score = score + 1
TypeError: unsupported operand type(s) for +: 'function' and 'int'

Код игры:

    import random
from colorama import init
from colorama import Fore, Style
def game_score():
    score = 0
def game_loop(score):
    score = score + 1
    init()
    r = random.randint(1, 10)
    r2 = random.randint(1, 10)
    rn = random.randint(1, 3)
    if rn == 1:
        znak = "+"
    if rn == 2:
        znak = "-"
    if rn == 3:
        znak = "*"
    if znak == "*":
        print(Fore.BLUE+"Сколько будет " + str(r) + znak + str(r2))
        ans1 = input(Fore.YELLOW+"Ведите правильный ответ:")
        right1 = r * r2
        if str(ans1) == str(right1):
            print(Fore.GREEN+"Правильно!")
            print(Style.RESET_ALL)
            print("У вас очков " + str(score))
            game_loop(game_score)

        else:
            print(Fore.RED+"Ответ не правильный")
            print(Fore.CYAN+"Игра началась заново")
            print(Style.RESET_ALL)
            game_score()
    if znak == "-":
        print(Fore.BLUE+"Сколько будет " + str(r) + znak + str(r2))
        ans2 = input(Fore.YELLOW+"Ведите правильный ответ:")
        right2 = r - r2
        if str(ans2) == str(right2):
            print(Fore.GREEN+"Правильно!")
            print(Style.RESET_ALL)
            print("У вас очков " + str(score))
            game_loop(game_score)
        else:
            print(Fore.RED+"Ответ не правильный")
            print(Fore.CYAN+"Игра началась заново")
            print(Style.RESET_ALL)
            game_score()
    if znak == "+":
        print(Fore.BLUE+"Сколько будет " + str(r) + znak + str(r2))
        ans3 = input(Fore.YELLOW+"Ведите правильный ответ:")
        right3 = r + r2
        if str(ans3) == str(right3):
            print(Fore.GREEN+"Правильно!")
            print(Style.RESET_ALL)
            game_loop(game_score)
        else:
            print(Fore.RED+"Ответ не правильный")
            print(Fore.CYAN+"Игра началась заново")
            print(Style.RESET_ALL)
            game_score()
game_loop(game_score)

Ответы (1 шт):

Автор решения: Іван Шнір

Я подизменил ваш код, вкратце вы забили написать return в функции game_score

from colorama import init
from colorama import Fore, Style
def game_score():
    score = 0
    return score
def game_loop(score):
    score = int(score()) + 1
    init()
    r = random.randint(1, 10)
    r2 = random.randint(1, 10)
    rn = random.randint(1, 3)
    if rn == 1:
        znak = "+"
    if rn == 2:
        znak = "-"
    if rn == 3:
        znak = "*"
    if znak == "*":
        print(Fore.BLUE+"Сколько будет " + str(r) + znak + str(r2))
        ans1 = input(Fore.YELLOW+"Ведите правильный ответ:")
        right1 = r * r2
        if str(ans1) == str(right1):
            print(Fore.GREEN+"Правильно!")
            print(Style.RESET_ALL)
            print("У вас очков " + str(score))
            game_loop(game_score())

        else:
            print(Fore.RED+"Ответ не правильный")
            print(Fore.CYAN+"Игра началась заново")
            print(Style.RESET_ALL)
            game_score()
    if znak == "-":
        print(Fore.BLUE+"Сколько будет " + str(r) + znak + str(r2))
        ans2 = input(Fore.YELLOW+"Ведите правильный ответ:")
        right2 = r - r2
        if str(ans2) == str(right2):
            print(Fore.GREEN+"Правильно!")
            print(Style.RESET_ALL)
            print("У вас очков " + str(score))
            game_loop(game_score())
        else:
            print(Fore.RED+"Ответ не правильный")
            print(Fore.CYAN+"Игра началась заново")
            print(Style.RESET_ALL)
            game_score()
    if znak == "+":
        print(Fore.BLUE+"Сколько будет " + str(r) + znak + str(r2))
        ans3 = input(Fore.YELLOW+"Ведите правильный ответ:")
        right3 = r + r2
        if str(ans3) == str(right3):
            print(Fore.GREEN+"Правильно!")
            print(Style.RESET_ALL)
            game_loop(game_score())
        else:
            print(Fore.RED+"Ответ не правильный")
            print(Fore.CYAN+"Игра началась заново")
            print(Style.RESET_ALL)
            game_score()
game_loop(game_score)
→ Ссылка