-1

私はプログラミングに不慣れで、宿題の問題で問題を抱えています。これが宿題の問題です:

幼稚園児に1桁の数字を追加する方法を教える簡単なゲームを開発します。関数game()は整数nを入力として受け取り、n個の1桁の加算の質問をします。追加する数値は、[0,9]の範囲(つまり、0から9まで)からランダムに選択する必要があります。プロンプトが表示されたら、ユーザーは回答を入力します。関数は、正解の場合は「正解」、不正解の場合は「不正解」を出力する必要があります。n個の質問の後、関数は正解の数を出力する必要があります。

例えば:

>>>game(3)
8+2=
Enter answer: 10
Correct.
6+7 =
Enter answer: 12
Incorrect.
7+7=
Enter answer: 14
Correct.

You got 2 correct answers out of 3

これが私がこれまでに持っているものです:

def game(n):
  x = random.randrange (0,10)
  y = random.randrange(0,10)
  numbers = (x+y)
  print (x, "+", y)
  guess = eval(input("Enter your guess: "))
  count = 0
  total = 0
  while total <= n:
    if guess == numbers:
      count = count + 1
      total = total + 1
      print("Correct.")
      break
    elif guess != numbers:
      total = total + 1
      print("Inncorrect")
      break
  return ("You got" + sum(count) + "correct answers out of" + sum(total))

答えが正しいかどうかはわかりますが、n回実行して結果を表示する方法がわかりません。

ヒントをいただければ幸いです。

4

1 に答える 1

4

表示されているスニペットにはいくつかの問題があり、機能的なものもあれば、スタイルと読みやすさに関するものもあります。

まず、whileループが繰り返されない理由は、breakステートメントが原因です。これらにより、プログラムはwhileに続く命令を続行します。つまり、whileループから「時期尚早」に終了します。

また、推測プロンプトなどをループ内に配置する必要があります...示されているように、これらはループの前に1回実行され、各反復では実行されません。

sum()カウントと合計は必要ありません。

次に、スタイルの問題について説明します。
編集:私もプラグインしたいと思いJon Clementsます:AVOID eval()
evalは他のSOの投稿で十分に反論しました。理由は次のとおりです。eval()必要なユースケースはほとんどありませんが、ほとんどの場合、この比較的「危険な」機能のはるかに優れた代替手段があります。ここでは、int()を使用して、ユーザーの入力を整数に変換します。

total = total + 1答えが正しいか間違っているかにかかわらず、どちらの場合もそれを行わなければならないので、繰り返しを避けることを検討することができます。(代わりにループも検討してfor x in range(n)ください。以下を参照してください。)テストされる条件は「if」条件の逆である
ため、elifをプレーンに置き換えます。 [によって提案されたように ]:必要のない場合は括弧を避け(数値の割り当てのように)、演算子を使用します(左辺値の繰り返しを避けます)。else
nneonneo+=

ループをaに変更することもお勧めしfor total in range(n)ます。これにより、変数全体を管理する必要がなくなります。最初のコードの精神を維持するために、この後者の変更は控えました。

total = 1
while total <= n:
    x = random.randrange(0,10)
    y = random.randrange(0,10)
    numbers = x + y
    print (x, "+", y)
    guess = eval(input("Enter your guess: "))
    total = total + 1
    if guess == numbers:
        count = count + 1
        print("Correct.")
    else:
        print("Incorrect")
 print("You got", count, "correct answers out of", total)
于 2013-03-01T02:21:00.400 に答える