2017-11-12 1 views
-1

これを編集しました。 testCraps(数値)が行うことは、勝利のために1を返し、損失のために0を返すquietCraps()という関数を呼び出したことです。 testCraps(number)は、(1)が返された場合はwinCoutnerに1を加え、0が返された場合は1をlossCounterに追加して、number(number)に等しい回数だけquietCraps()を実行することになっています。ただ、明確にするカウンタを使ってPythonでクラップスゲームを作っていますが、過去1にカウントされません。

def testCraps(number): 
    winCounter = 0 
    lossCounter = 0 
    for test in range(number): 
     testGame = quietCraps(value1 = 1) 
     if str(test) == "1": 
      winCounter = winCounter + 1 
     elif str(test) == "0": 
      lossCounter = lossCounter + 1 
    print("The amount of wins is " + str(winCounter)) 
    print("The amount of losses is " + str(lossCounter)) 

、勝利は1を返し、損失は私がtestCraps(数)でカウンタがカウントしているが、それは唯一の両方のカウンタの1まで行くこと。konw 0を返します。例:

testCraps(5) 
0 
1 
1 
1 
1 
The amount of wins is 1 
The amount of losses is 1 

答えはかなり簡単ですが、私は迷っています。誰でも助けてくれますか?私のポストに何か悪いことがあったら、すみません。ここで質問をするのは初めてです。ここで

+4

これは、他の人があなたのためにデバッグするためのコードです。これを問題を示す[mcve]に減らす必要があります。 – Carcigenicate

+0

インデントを修正できますか? – Aufziehvogel

+0

あなたのテスト 'もしstr(test)==" 1 "'と同様に "0"の場合はループ変数をテストしていて、実際のtestGameは無視します。正確に1回0になり、1回だけ正確になります。残りの時間は2、3、4となります。私はあなたが "テスト"変数をテストしたくないと思っています。 –

答えて

0
for test in range(number): 
    testGame = quietCraps(value1 = 1) 
    if str(test) == "1": 
     winCounter = winCounter + 1 
    elif str(test) == "0": 
     lossCounter = lossCounter + 1 

winCounterはときtest == 1インクリメントされます。これは、forループが0からnumberに上がるので、両方のカウンタの結果が1になるため、1回発生します。testGameを代わりにチェックしようとしていますか? は何も返さないので、値はNoneです。

def quietCraps(): 
    crapsTotal = craps(2) 
    return crapsTotal 

このようにしてquietCraps()は値を返します。また、使用されないので、value1引数は必要ありません。同様に、craps(value1 = 2を書く必要はただ単に数字であれば試合をチェックし、craps(2)

for test in range(number): 
    testGame = quietCraps(value1 = 1) 
    if testGame == 1: 
     winCounter = winCounter + 1 
    elif testGame == 0: 
     lossCounter = lossCounter + 1 

に結果を文字列に変換する必要を書きません。

if value1 == 1 == True: 

P.Sただif value1 == 1に変更します。それが真であるかどうかを確認する必要はありません。がチェックしているからです!

関連する問題