所以我必须完成一项模拟掷硬币的任务,并且必须计算翻转,尾巴和头部的数量。
我的第一个问题是我无法获得显示的头部或尾部的数量,修复了它,但后来它增加了一倍(例如:我请求50次翻转,头部和尾部的总量相当于100),我发现我已经意外地做了它,所以它每次翻转都是两次,而不是每次翻转一次,当我改变它时,程序似乎没有运行。
当我输入我希望硬币翻转并按下输入的次数时,它什么都不做,然后转到终端上的下一行。我已经删除了我的程序中的所有空格,以防无限循环,除了我无法弄清楚导致这种情况的原因。
感谢您的帮助。
答案 0 :(得分:1)
您需要删除以下行,否则它将继续循环
count +=1
因为,同时您也在增加head
或tail
。
假设您提供了输入1
,那么它将检查
head+tail < count # 0 < 1 , which is true
然后假设coin=1
,
count+=1
head= head+1
下一个循环
head+tail < count # 1 < 2 , which is true
答案 1 :(得分:0)
问题是你增加你的计数变量,以及你的头尾数。因此,您正处于一个针对移动目标的while循环中。我并没有尝试与Ravi竞争接受的答案,但这是您的代码的简化版本。
您不需要使用while循环,因为您知道要执行多少次迭代。在这种情况下,for循环是合适的工具。
from random import choice
heads = tails = 0
count = int(input('how many flips? '))
for _ in range(count):
if choice([True, False]):
heads += 1
else:
tails += 1
print('you flipped %d times' % count)
print('you flipped %d heads and %d tails' % (heads, tails))