Python 无限循环

Python 无限循环,python,infinite-loop,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 coin

我正在尝试为我的投币机器人创建一个无限循环,这样它就可以继续输出结果,因为我完全不了解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")

到目前为止,您的确切代码与

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
如果您确实希望无限循环,请将nothing或负值作为参数传递给
coinflip
函数。然而,通过这种方式,您将永远无法停止它(除非您使用Ctrl+C或类似的方式中断)


coinflip
是一个函数,因此您可以根据某些条件使用一些技巧来中断无限循环。

到目前为止,您的确切代码与

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
如果您确实希望无限循环,请将nothing或负值作为参数传递给
coinflip
函数。然而,通过这种方式,您将永远无法停止它(除非您使用Ctrl+C或类似的方式中断)


coinflip
是一个函数,所以你可以根据某些条件做一些技巧来中断无限循环。

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

此外,您不需要从随机导入randint执行
,也不需要执行
导入随机
。如果执行第一个操作,则可以直接调用
randint(1,2)
(import语句声明它可以在随机库中找到randint)。如果你进行第二次导入,那么你必须作为
random
的孩子调用
randint
,所以
random.randint(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")

此外,您不需要从随机导入randint执行
,也不需要执行
导入随机
。如果执行第一个操作,则可以直接调用
randint(1,2)
(import语句声明它可以在随机库中找到randint)。如果您执行第二次导入,那么您必须作为
random
的子级调用
randint
,因此
random.randint(1,2)

目前,您在每次迭代中增加
cointost
两次,因此您只能得到一半的结果。对于范围(100)内的uu,最好使用
而不是
while:
循环。目前,您在每次迭代中增加
cointost
两次,因此您只能得到一半的结果。在范围(100)内使用
更好,而True:
循环使用
。“cointost是一个生成器表达式”我想你的意思是
cointrip
。除此之外,+1`@tobias_k,明显的打字错误,谢谢。另外,我想如果你在他们的答案中编辑这样的错误,没有人会介意:)“cointost是一个生成器表达式”我想你的意思是
cointflip
。除此之外,+1`@tobias_k,明显的打字错误,谢谢。另外,我想如果你只是在他们的答案中编辑这样的错误,没有人会介意:)