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ループごとに 2 回インクリメントしています。

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

次のように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 に答える
3

この行を入れてください:

coinresult = random.randint(1,2)

while ループ内。それ以外の場合は、一度値を取得し、ループ内で何度も使用するだけで、ループごとに 2 つの場所でコイントスに追加していました。

于 2013-02-28T17:32:05.317 に答える
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")

ランダム化を思い出したことがないため、数が変わることはなく、ループごとに 2 つの場所でコイントスに追加していました。

于 2013-02-28T17:36:02.363 に答える
0

冒険したい場合は、ジェネレーター式と組み込みの合計を 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 に答える