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)