0

整个下午,

作为一个想要自学编程的人,我遇到了你的道路。因此,我开始使用 Python。作为免责声明,我已经在问题中搜索了一些 Python 掷硬币的示例,但我并没有真正理解以前的提问者提出的任何代码。

我的任务 我的教育材料要求我设计一个应用程序,将虚拟硬币翻转 100 次,然后打印结果。我的想法是使用无限循环,当掷硬币达到 100 时爆发,然后打印结果。

我还没有完全做到这一点,我没有发现我所写的错误。它似乎实现了 100 次翻转,但随后只打印出 50 次正面/反面;因此我的错误在计数逻辑的某个地方?

任何解释(记住我是初学者,而不是白痴!)都会得到我的感谢和我的支持

谢谢阅读

# Exercise 3.2
# Heads and Tails coin flip

#import random
import random

#declare variables
heads = 0
tails = 0
cointoss = 0
coinresult = random.randint(1,2)

#start the loop
while True:
    cointoss +=1

    #end the loop if cointoss is greater than 100
    if cointoss > 100:
        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")
4

5 回答 5

4

cointoss每循环增加两次。

while True:
    cointoss +=1      # You already incremented here, therefore...
    if cointoss > 100:
        break
    if coinresult == 1:
        heads +=1
        cointoss +=1  # ...get rid of this...
    elif coinresult == 2:
        tails +=1
        cointoss +=1  # ...and this.

此外,正如所指出的,您应该coinresult在循环内的某个地方获得一个新的。

于 2013-02-28T17:32:28.813 回答
3

把这一行:

coinresult = random.randint(1,2)

在while循环内。否则,您将获得一次价值,然后在循环内一遍又一遍地使用它,并且您在每个循环的两个地方添加了硬币。

于 2013-02-28T17:32:05.317 回答
3

通过使用range方法,您可能会更轻松地编写循环,如下所示:

for i in range(0, 100):
    coinresult = random.randint(1, 2)
    if coinresult == 1:
        heads += 1
    else:
        tails += 1
print("Heads came up", heads, "times")
print("Tails came up", tails, "times")
于 2013-02-28T17:34:18.463 回答
1
# Exercise 3.2
# Heads and Tails coin flip

#import random
import random

#declare variables
heads = 0
tails = 0
cointoss = 0
coinresult = random.randint(1,2)

#start the loop
while True:
   cointoss +=1

#end the loop if cointoss is greater than 100
   if cointoss > 100:
       break
   if coinresult == 1:
       heads +=1
   elif coinresult == 2:
       tails +=1
   coinresult = random.randint(1,2)

print("Heads came up", heads, "times")
print("Tails came up", tails, "times")

你从来没有回忆起你的随机化,因此这个数字永远不会改变,并且你在每个循环的两个地方添加了投币。

于 2013-02-28T17:36:02.363 回答
0

如果您想冒险,请查看生成器表达式和内置sum以及 random.randint

heads = sum(random.randint(0,1) for _ in range(100))
print("Heads came up {} times".format(heads))
print("Tails came up {} times".format(100 - heads))
于 2013-02-28T17:38:23.583 回答