python-3.x - 枚举平等的 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)
解决方案
尝试这个:
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 列表
推荐阅读
- java - 如何对 guice createinjector 方法进行单元测试
- java - 从 lambda 函数发布到 AWS iot 上的主题 [Java]
- vue.js - 是否可以遵循使用 vue-cli 但使用 CLI 3 的教程?
- java - 如何使用反射在 Enum 类上调用方法
- sql - .NET 对象: System.Data.SqlClient.SqlConnection 。NAV 服务器不支持客户端回调
- sql - 在 SQL 查询中使用字符串(表中的多值字段)作为 where 子句
- java - 在 DynamicJasper 中合并多个单元格
- php - URL 与 PHP $_SERVER['DOCUMENT_ROOT'] 不同
- mybatis - MyBatis 多行 INSERT 使用 SQL Builder
- openfire - Ofmeet 基于插件令牌的身份验证在 openfire 中不起作用