我正在尝试用 Python 创建 Hi Ho Cherry O 游戏。你通过旋转一个随机旋转器来转弯,它会告诉你是否要在转弯时添加或移除樱桃。和游戏一样,可能的微调结果是:
取出 1 个樱桃,取出 2 个樱桃,取出 3 个樱桃,取出 4 个樱桃,小鸟拜访你的樱桃桶(添加 2 个樱桃),狗拜访你的樱桃桶(添加 2 个樱桃),溢出的桶(将所有 10 个樱桃放回你的树)
我已经弄清楚如何计算每次旋转的结果、每次旋转后树上樱桃的数量(他必须始终在 0 到 10 之间)以及赢得比赛所需的最终回合数。但是,我想添加几行代码,在每场比赛获胜后,将比赛迭代 100 次,然后退出。最后,将计算 100 场比赛的平均回合数。到目前为止,这是我所拥有的,我们将不胜感激:
import random
spinnerChoices = [-1, -2, -3, -4, 2, 2, 10]
turns = 0
cherriesOnTree = 10
while cherriesOnTree > 0:
spinIndex = random.randrange(0, 7)
spinResult = spinnerChoices[spinIndex]
print "You spun " + str(spinResult) + "."
cherriesOnTree += spinResult
if cherriesOnTree > 10:
cherriesOnTree = 10
elif cherriesOnTree < 0:
cherriesOnTree = 0
print "You have " + str(cherriesOnTree) + " cherries on your tree."
turns += 1
print "It took you " + str(turns) + " turns to win the game."
lastline = raw_input(">")
您应该将 while 循环放在 for 循环中,如下所示:
for i in range(100):
while cherriesOnTree > 0:
etc..
为了计算平均值,在 for 循环之前创建一个数组,例如命名转弯。
tot_turns = []
然后,当游戏获胜时,您需要将结果附加到您创建的列表中。
tot_turns.append(turns)
要找到均值,您可以在 for 循环之后执行如下操作:
mean_turns = sum(tot_turns)/len(tot_turns)
编辑:我添加了一个工作示例。请注意,您必须在每次迭代开始时重置 turns
和 cherriesOnTree
变量。
import random
spinnerChoices = [-1, -2, -3, -4, 2, 2, 10]
tot_turns = []
for i in range(100):
cherriesOnTree = 10
turns = 0
while cherriesOnTree > 0:
spinIndex = random.randrange(0, 7)
spinResult = spinnerChoices[spinIndex]
#print "You spun " + str(spinResult) + "."
cherriesOnTree += spinResult
if cherriesOnTree > 10:
cherriesOnTree = 10
elif cherriesOnTree < 0:
cherriesOnTree = 0
#print "You have " + str(cherriesOnTree) + " cherries on your tree."
turns += 1
print "It took you " + str(turns) + " turns to win the game."
tot_turns.append(turns)
mean_turns = sum(tot_turns)/len(tot_turns)
print 'It took you {} turns on average to win the game.'.format(mean_turns)
lastline = raw_input(">")