首页 > 解决方案 > 枚举平等的 Python 3 元组总是失败

问题描述

我正在构建一个石头、纸和剪刀的小型模拟,我有一个支付函数,它返回一个给定两个动作的数字元组


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)

标签: python-3.xenumstuplesequality

解决方案


尝试这个:

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() 返回一个 python 列表


推荐阅读