Coinflip机器人无限循环

时间:2014-04-14 12:02:36

标签: python infinite-loop

我正在尝试为我的硬币翻转机器人创建一个无限循环,所以它将继续抽出结果,因为一个完全不熟悉Python的人我完全迷失了。我已经做了一些关于循环的阅读,没有任何东西在跳出来。

非常感谢您的帮助。

from random import randint
import random
heads = 0
tails = 0
cointoss = 0

while True:
    coinresult = random.randint(1,2)
    cointoss +=1

    #end the loop if cointoss is greater than 100
    if cointoss > 101:
        break
    if coinresult == 1:
        heads +=1
        cointoss +=1
    elif coinresult == 2:
        tails +=1
        cointoss +=1

print("Heads came up", heads, "times")
print("Tails came up", tails, "times")

2 个答案:

答案 0 :(得分:3)

截至目前,您的确切代码等同于

import random

def coinflip(maxtosses=-1):
    tosses = 0

    while tosses != maxtosses:
        tosses += 1
        yield random.choice([True, False])

heads, tails = 0
for toss in coinflip(100):
    if toss:
        heads += 1
    else:
        tails += 1

如果您真的希望无限循环 - 将任何内容或负值作为参数传递给coinflip函数。但是,这样你就无法阻止它(好吧,除非你用Ctrl + C或类似的东西打断)。

coinflipgenerator expression,所以你可以根据某些条件做一些中断无限循环的技巧。

答案 1 :(得分:2)

J0HN的答案是合法的,但我想我会稍微修改你自己的答案,告诉你如何做类似的事情。你不清楚你自己的代码到底是什么问题,但这个改变使它实际上是“无限的”,直到你告诉它停止。我注释掉了不再需要的行。

#from random import randint
import random
heads = 0
tails = 0
#cointoss = 0

print("hit Ctrl-C to stop the inifinite loop!")
try:
    while True:
        coinresult = random.randint(1,2)
        #cointoss +=1

        #end the loop if cointoss is greater than 100
        #if cointoss > 101:
        #    break
        if coinresult == 1:
            heads +=1
        #    cointoss +=1
        elif coinresult == 2:
            tails +=1
        #    cointoss +=1
except KeyboardInterrupt:
    print("Heads came up", heads, "times")
    print("Tails came up", tails, "times")

此外,您无需同时执行from random import randintimport random。如果你做第一个,那么你可以直接调用randint(1,2)(import语句声明它可以在随机库中找到randint)。如果您进行第二次导入,则必须以randint的孩子身份致电randomrandom.randint(1,2)