Python 无限循环
我正在尝试为我的投币机器人创建一个无限循环,这样它就可以继续输出结果,因为我完全不了解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
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,明显的打字错误,谢谢。另外,我想如果你只是在他们的答案中编辑这样的错误,没有人会介意:)