我正在尝试为我的硬币翻转机器人创建一个无限循环,所以它将继续抽出结果,因为一个完全不熟悉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")
答案 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或类似的东西打断)。
coinflip
是generator 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 randint
和import random
。如果你做第一个,那么你可以直接调用randint(1,2)
(import语句声明它可以在随机库中找到randint)。如果您进行第二次导入,则必须以randint
的孩子身份致电random
,random.randint(1,2)
。