Я пытаюсь реализовать функцию, в которой у меня есть 2 игрока, и их выплаты зависят от их действий.
def game(action1,action2):
if action1 == "a" and action2 == "a":
payoff1 = 1
payoff2 = 1
elif action1 == "a" and action2 == "b":
payoff1 = -5
payoff2 = 3
elif action1 == "b" and action2 == "a":
payoff1 = 3
payoff2 = -5
elif action1 == "b" and action2 == "b":
payoff1 = 2
payoff2 = 2
return payoff1 , payoff2
Тогда у меня была бы стратегия для этой игры (пример):
def TitForTat(round_num, previous_action):
if round_num == 0:
action = "a"
else:
action = previous_action
return action
def AlwaysDefect():
return "b"
action1 = TitForTat (0,'c')
action2 = AlwaysDefect()
game (action1,action2)
Это возвращает ошибку:
local variable 'payoff1' referenced before assignment
Я пытался инициализировать их на «0», но то же самое.
Точные функции работают очень хорошо, если у меня есть все положительные значения.
EDIT:
Извините за опечатку. А функция AlwaysDefect () возвращает «b» и «d».