-3

“这里的新程序员”我正在尝试做一个硬币翻转代码,它可以翻转硬币 100 次并给我正面或反面的总价值,但我想继续翻转直到它的 50/50。

我有硬币翻转但我处于无限循环中我无法摆脱


heads = 0
tails = 0
tries = 0

while heads != 50 and tails != 50:
    for i in range(100):
        x = random.randint(0,1)
        if x == 1:
            heads += 1
        else:
            tails += 1
    print(heads,tails)
    tries += 1
    tails = 0
    heads = 0

print(tries)

我希望它每次都显示正面和反面,然后是实现 50/50 所需的迭代。

例如

55 45

52 48

47 53

51 49

53 47

40 60

45 55

42 58

51 49

46 54

54 46

42 58

51 49

45 55

48 52

50 50

我知道答案一定很简单,但我就是想不通。

提前致谢

4

2 回答 2

4

在 while 循环开始时将 head 和 tails 设置为 0,而不是结束,否则在检查 while 条件的那一刻两者都将始终为 0。

于 2019-10-02T15:09:20.677 回答
-1

目前,您在循环结束时将 head 和 tails 值都重置为 0。因此,每次检查 while 条件时,heads 和 tails 变量都等于 0。

对此的一种解决方法是将代码的末尾修改为如下所示

tries += 1
if heads == 50:
    break
tails = 0
heads = 0

这将在将值重置为 0之前检查值是否等于 50 ,如果是这种情况,则退出 while 循环

于 2019-10-02T15:16:02.863 回答