我试图实现一个函数,其中我有两个玩家,他们的收益取决于他们的行动。你知道吗
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”,但都是一样的。 如果我有所有的正值,那么精确的函数工作得很好。你知道吗
编辑:
很抱歉出现了打字错误。函数AlwaysDefect()返回“b”和“d”。你知道吗
你的意思是
AlwaysDefect
函数返回'd'还是'b'?你知道吗既然它返回了'd',您就不必使用任何if语句,而且您也没有payoff1或payoff2的定义
也是一个打字错误:
payyoff2
->;payoff2
您可以设置默认语句来修复它(在else部分):
函数调用中的错误太多。使用字典:
如果操作是c或d,则if语句无法捕获,这将导致payoff1和payoff2未初始化。你知道吗
相关问题 更多 >
编程相关推荐