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 列表