0

我们有一个游戏,游戏包含 500 个回合。在每一轮中,两个硬币同时滚动,如果两个硬币都有“正面”,那么我们赢了 1 英镑,如果两个都有“反面”,那么我们输了 1 英镑,如果我们遇到一个硬币显示“正面”的情况'而另一枚硬币显示'反面',反之亦然,然后我们只是'再试一次'。

coin_one = [random.randint(0, 1) for x in range(500)]
coin_two = [random.randint(0, 1) for x in range(500)]

game = zip(coin_one, coin_two)

for a, b in game:
    if a and b:
        print(1)
    elif not a and not b:
        print(-1)
else:
    print('please try again') # or continue

结果是:

1 请再试一次 -1 请再试一次 请再试一次 请再试一次 -1 -1 1 -1 ,............, 1

我试图找到结果的总和,以便我可以知道游戏完成后(500 轮)的玩家赢或输了多少。

在获得只玩一场游戏(500 轮)的结果(总赢/输)后,我希望将游戏玩 100 次,以创建一些汇总统计数据,例如玩这款游戏的平均值、最大值、最小值和标准差。

4

2 回答 2

2

您可以简单地将值的总和累加到一个新变量中:

total = 0
for a, b in game:
    if a and b:
        total += 1
    elif not a and not b:
        total -= 1
    else:
        print('please try again')

print(total)

如果你不想在它们都有不匹配的值的情况下打印任何东西,你可以做一个单行:

s = sum(0 if a^b else (-1, 1)[a and b] for a, b in game)

请注意,这^是 xor 运算符,如果两个操作数相同,它将返回一个假值。and把它放在一个三元组中,我们可以通过使用两个操作数的短路结果进行索引来选择 -1 或 1 。

于 2017-02-04T13:48:38.727 回答
0

正如其他人所建议的那样,这total就是您想要搜索的内容。在循环之前定义它,然后它在循环内进入/递减。

total = 0
for a, b in game:
    if a and b:
        total += 1
    elif not a and not b:
        total -= 1
于 2017-02-04T13:49:13.803 回答