gpt4 book ai didi

python - 平均获胜

转载 作者:行者123 更新时间:2023-12-01 05:55:49 25 4
gpt4 key购买 nike

我刚刚学习 python(有史以来的第一种语言),并正在以我觉得有趣的方式实现我发现的东西。我构建了一个伪老虎机赔率计算器。然而,它仅限于赢得一项大奖。有没有办法让它一遍又一遍地运行,给出n次游戏的平均尝试次数以获得大奖?

这是我的代码

#!/usr/bin/env python
import random

a = 1

while a >0 :
l1 = random.randrange(36)
l2 = random.randrange(36)
l3 = random.randrange(36)

print l1, l2, l3
if l1 == l2 == l3 == 7:
print 'grand prize winner!!!'
break
elif l1 == l2 == l3:
print 'you won! congratulations'
print 'it took', a, 'attempts to win'
else:
a += 1
print 'sorry... try again'
print 'attempt', a

还有,有没有办法告诉我在赢得大奖的过程中正常获胜的次数有多少

最佳答案

大奖 if block 中的 break 语句退出外部 while 循环。如果您希望它继续运行,请删除中断。另外,作为一个风格点,while True:while 1: 是创建无限循环的更清晰的方法。至于问题的第二部分,您有一个计数器,但您可能想捕获更多数据,如下所示:

import random

def play(till_jackpot_count):
game_data_per_jackpot = [{'plays' : 0, 'wins' : 0}]
wheel_values = xrange(36)
wheels = [0, 0, 0]
while till_jackpot_count >= len(game_data_per_jackpot):
wheels = [random.choice(wheel_values) for wheel in wheels]
game_data_per_jackpot[-1]['plays'] += 1
print '%d plays since last jackpot' % game_data_per_jackpot[-1]['plays']
print '%d wins since last jackpot' % game_data_per_jackpot[-1]['wins']
print '%d total plays' % sum([data['plays'] for data in game_data_per_jackpot])
print '%d total wins' % sum([data['wins'] for data in game_data_per_jackpot])
print '%d total jackpots' % (len(game_data_per_jackpot) - 1)
print 'this play: {} {} {}'.format(*wheels)
if len(set(wheels)) == 1:
if wheels[0] == 7:
print 'jackpot!'
game_data_per_jackpot.append({'plays' : 0, 'wins' : 0})
else:
print 'win!'
game_data_per_jackpot[-1]['wins'] += 1
return game_data_per_jackpot[:-1]

play(10)

我还在顶部隐藏了一个控件till_jackpot_count,这将使循环在获得该数量的大奖后结束。如果您想在函数本身之外进一步分析测试结果,该函数还会返回测试结果,但结果会被丢弃在这里,因为它没有分配给任何东西。

为了您自己的研究,此代码使用列表 ([])、字典 ({})、元组 (())、旧式字符串格式 ('%d' % var)、新式字符串格式 ('{} {} {}'.format(*iterable))、列表推导式([a for a in b])、切片 (list[:]) 和一些内置函数 (sumlen )以及您已经熟悉的random 库和while 循环。我还将您的 random.randrange() 替换为预构建的 xrange()< 的更简单、可能更高效的 random.sample()/.

关于python - 平均获胜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com