改进的抛硬币计划不会运行

时间:2017-03-29 03:49:22

标签: python

所以我必须完成一项模拟掷硬币的任务,并且必须计算翻转,尾巴和头部的数量。

我的第一个问题是我无法获得显示的头部或尾部的数量,修复了它,但后来它增加了一倍(例如:我请求50次翻转,头部和尾部的总量相当于100),我发现我已经意外地做了它,所以它每次翻转都是两次,而不是每次翻转一次,当我改变它时,程序似乎没有运行。

当我输入我希望硬币翻转并按下输入的次数时,它什么都不做,然后转到终端上的下一行。我已经删除了我的程序中的所有空格,以防无限循环,除了我无法弄清楚导致这种情况的原因。

感谢您的帮助。

code

what happens in the terminal once I run the program

2 个答案:

答案 0 :(得分:1)

您需要删除以下行,否则它将继续循环

count +=1

因为,同时您也在增加headtail

假设您提供了输入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))