Python 3 枚举元组相等总是失败
Python 3 Tuple of enum Equality always fails
我正在构建一个石头剪刀布的小型模拟,我有一个收益函数
returns 给定两个动作的数字元组
def payoff(act1, act2):
if act1, act2 == Action.ROCK, Action.PAPER:
return -1, 1
elif act1, act2 == Action.PAPER, Action.ROCK:
return 1, -1
elif act1, act2 == Action.PAPER, Action.SCISSORS:
return -1, 1
elif act1, act2 == Action.SCISSORS, Action.PAPER:
return 1, -1
elif act1, act2 == Action.SCISSORS, Action.ROCK:
return -1, 1
elif act1, act2 == Action.ROCK, Action.SCISSORS:
return 1, -1
else :
return 0, 0
当作为参数给定时,我随机抽取两个动作,相等性总是失败。
action1 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)
action2 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)
# always returns (0,0)
payoff(action1,action2)
我不确定是否正确地进行了相等性检查,你可能会注意到我使用 (act1,act2)
即时构建元组
试试这个:
action1 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)[0]
action2 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)[0]
# always returns (0,0)
payoff(action1,action2)
random.sample() return 一个 python 列表
我正在构建一个石头剪刀布的小型模拟,我有一个收益函数 returns 给定两个动作的数字元组
def payoff(act1, act2):
if act1, act2 == Action.ROCK, Action.PAPER:
return -1, 1
elif act1, act2 == Action.PAPER, Action.ROCK:
return 1, -1
elif act1, act2 == Action.PAPER, Action.SCISSORS:
return -1, 1
elif act1, act2 == Action.SCISSORS, Action.PAPER:
return 1, -1
elif act1, act2 == Action.SCISSORS, Action.ROCK:
return -1, 1
elif act1, act2 == Action.ROCK, Action.SCISSORS:
return 1, -1
else :
return 0, 0
当作为参数给定时,我随机抽取两个动作,相等性总是失败。
action1 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)
action2 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)
# always returns (0,0)
payoff(action1,action2)
我不确定是否正确地进行了相等性检查,你可能会注意到我使用 (act1,act2)
试试这个:
action1 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)[0]
action2 = random.sample([Action.ROCK,Action.PAPER,Action.SCISSORS],1)[0]
# always returns (0,0)
payoff(action1,action2)
random.sample() return 一个 python 列表