は、ここでは、修正するために必要なものです:
- あなたのインデントはすべての場所です。
- あなたもこれに値を与えた前に、あなたのループであなたの条件の一部として使用
counter
をしようとしていました。
- whileループの本体の内部に
n1
とn2
を作成したため、すべての推定値n1
とn2
が再度作成され、異なる値が割り当てられた後に作成されました。私はあなたがそれが起こることを望んでいるかどうかはわかりませんが、もしあなたがしたら、2行をループ内に戻すことができます。
- ユーザーが正しい答えを推測している場合は、正しくループの外に破壊されませんでした。だから私は
break
を追加しました。それは成功した答えのループを終了します。また、答えが間違っている場合は、pass
は必要ありません。ループは、正しい答えを受け取るか、またはcounter
の値に達するまで続きます。
とにかく、ここにあなたのコードの固定/作業バージョンです。
import random
def game(n):
counter = 0
n1 = random.randrange(1,10)
n2 = random.randrange(1,10)
while counter < n:
# move creation of n1, n2 here if you want #'s to change after every guess
print ('{} + {}'.format(n1, n2))
answer = input("Enter answer: ")
if answer == int(n1 + n2):
print("Correct.")
break
else:
print("Incorrect.")
counter += 1
あなたは本当に、このようなインデント、while
ループ、および変数として、いくつかの基本的なPythonの話題、上に読んでください。
希望すると便利です。
は最後に、ここでは2つのテストです。そのうちの1つは正解を正しく推測し、もう1つはカウンタに達するまで推測します。
4 + 9
Enter answer: 3
Incorrect.
4 + 9
Enter answer: 2
Incorrect.
4 + 9
Enter answer: 1
Incorrect.
9 + 8
Enter answer: 17
Correct.
これらの例の両方で、私はgame(3)
という関数を呼び出しました。
インデントをご確認ください。 'while 'の行はインデントされていません。 – timrau
あなたが提供したコードによれば、字下げの問題があり、 'counter'も定義されていません。あなたの側にいる最初のエラーがprintステートメントであることに私は驚いています。 – idjaw
あなたはインデントして作業する必要があります。実行しているコードと一致することを確認してください。これは、スコープの問題のように聞こえる、とあなたが投稿したコードのインデントは、あなたの実際のコードと一致しない限りインデントはPythonで範囲を定義するので、それは助けることは難しいです。また、あなたのコードにも論理エラーがあるように見えます。 –