python - 在 Python 中,如何运行 while 循环的迭代 n 次?

标签 python

我正在尝试用 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)

编辑:我添加了一个工作示例。请注意,您必须在每次迭代开始时重置 turnscherriesOnTree 变量。

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(">")

关于python - 在 Python 中,如何运行 while 循环的迭代 n 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624932/

相关文章:

python - SAP HANA Python 连接 HDBCLI

python - 对类属性进行假继承是否不好

python - 如何使用 selenium (python 脚本)找到该图像?

python - 对象位于 0x03885A90> API 请求

python - "periodically"在 Python 中替换字符串中字符的最佳方法是什么?

python - 使用 pandas 数据框中的两行来选择另一个数据框中的位置

python - 在 Python 包中包含 *.pyd 文件

python - 音乐播放器播放列表

python - 按包含数字的行排序,忽略附加在字母上的数字

python - Django 立即保存并返回对象(使用自定义 pk)