0

ユーザーが乱数を推測するために使用するエントリの数をカウントするアキュムレータを作成する必要があります。while ステートメントはすべて把握していますが、エントリの数をカウントするピースを取得できません。助けてくれてありがとう!

import random
secretNumber = random.randint(1,100)
secretNumber = int(secretNumber)
print("Guess a number between 1 and 100!")
number = input("Your guess: ")
number = int(number)
tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        number = input("Your guess: ")
        number = int(number)
    if number < secretNumber:
        print("Too low!")
        number = input("Your guess: ")
        number = int(number)
while number == secretNumber:
    print("You got it in",tries,"tries")
    break

私が助けを必要としている部分は、休憩の後に試行アキュムレータを実装することです

4

5 に答える 5

3

あなたが最初に聞きたいことは、あなたprint triesが何を得ているのかということです。事実上、常に 1 を取得していることがわかります。

なぜなら、あなたはインクリメントしなかったからです。ユーザーが推測し続けるため、追加しませんでした。

tries = tries + 1一般に、推測ごとに書くことができます。

tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
    if number < secretNumber:
        print("Too low!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
while number == secretNumber:
    print("You got it in",tries,"tries")
    break

このコードにはまだ問題があります。2 番目のループは意味がありません。ループはループのように聞こえます。条件が満たされるか、誰か(あなた)が中断して終了するように指示するまで、実行を続けます。

ユーザーが番号を見つけた場合、それwhile number !- secretNumberは正しくなりFalseますか? 最初のループを終了します。したがって、2 番目のループをスキップして、ユーザーを祝福することができます。

もう1つの小さなことは、二重ifステートメントです。 ifステートメントは高価です。コンピューターは、正しく推測するためにテストする必要があります。ただし、いずれにしても、複数の条件を実行する別の方法があります。

if condition1 met:
    do this
elif condition2 met:
    do this
elif condition3 met:
    do this
elif more....
else:   # optional, but encourage, this is a default fallback case
    do this

number > secretNumberである場合、理論的Trueにテストする必要はありません。number < secretNumber適応させることで、コードをよりクリーンで論理的に健全なものにしますif .. elif .. else

import random
secretNumber = random.randint(1,100)
secretNumber = int(secretNumber)
print("Guess a number between 1 and 100!")
number = input("Your guess: ")
number = int(number)
tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
    elif number < secretNumber:
        print("Too low!")
        tries = tries + 1      # here is the addition
        number = input("Your guess: ")
        number = int(number)
print("You got it in",tries,"tries")
# another way to print is
# print("You got it in %s tries" % tries)
# print("You got it in {t} tries".format(t=tries))

初心者の方は、printコードのデバッグに役立ててください。

于 2013-01-09T02:10:06.240 に答える
1

線を入れるだけ

tries += 1

triesループ内 - この行は変数を 1増やします。

また、if ステートメントからその一部を削除して短くする自由を取り、2 番目の while ループを削除しました (ループは常に 1 回だけ発生するため、そこにループを配置する理由はありません)。

while number != secretNumber:
    tries += 1
    if number > secretNumber:
        print("Too high!")
    if number < secretNumber:
        print("Too low!")
    number = input("Your guess: ")
    number = int(number)
print("You got it in",tries,"tries")
于 2013-01-09T02:01:57.820 に答える
0
import random
i = 0
rand_num = random.randint(1, 100)
while True:
    i += 1
    try:
        guess = int(input('Guess the number: ')
    except ValueError:
        print('Invalid input, try again')
        continue
    if guess < rand_num:
        print('Too low, try again')
    elif guess > rand_num:
        print('Too high, try again')
    else:
        print('You got it in ', tries, ' tries!')
        break
于 2013-01-09T02:06:55.883 に答える
0

間違えた場合は、試行回数を追加できます。

...
while number != secretNumber:
    tries += 1
    if number > secretNumber:
        print("Too high!")
...

また、これの代わりに最後に:

while number == secretNumber:
    print("You got it in",tries,"tries")
    break

これを使用できます:

print("You got it in",tries,"tries")

数字を正しく取得した場合にのみ、このポイントに到達するためです。

もう1つのことは、最初は1回ではなく0回試行したため、試行回数は最初は0回である必要があります。

于 2013-01-09T02:07:24.613 に答える
-1

tries += 1while ループに余分な行を追加します。これが行うことは、すべての推測を試行するために 1 を追加することです。したがって、コードは次のようになります。

import random
secretNumber = random.randint(1,100)
secretNumber = int(secretNumber)
print("Guess a number between 1 and 100!")
number = input("Your guess: ")
number = int(number)
tries = 1
while number != secretNumber:
    if number > secretNumber:
        print("Too high!")
        number = input("Your guess: ")
    number = int(number)
    if number < secretNumber:
        print("Too low!")
        number = input("Your guess: ")
        number = int(number)
while number == secretNumber:
    print("You got it in",tries,"tries")
    break
于 2013-01-09T02:23:49.297 に答える