1

このゲス・ザ・ナンバーの課題で苦労しています。なかなかうまくいかないので、助けてほしいです。ゲームに勝利し、もう一度プレイするために「はい」を選択すると、ゲームが再開されず、次の推測番号 (例: 推測番号 1、推測番号 2 など) が続行されるため、もう一度プレイ オプションが機能しません。しかし、負けると最初の部分に戻り、「何回トライしますか」と尋ねられます。それで、どうすればあなたが勝つ部分を手に入れることができますか?また、ヒント オプションを改善するためのヒントを教えてもらえますか? また、そのdef main():のいずれかを挿入する必要がありますか? この課題について、まだその時点に達しているかどうかわからないからです。だから私を助けてください。ありがとう。

# This is a guess the number game.
import random
answer = "yes"
number = random.randint(1, 10)

while answer == 'yes':
    tries = 0
    guess = 0
    guessnumber = 0
    tries = int(input("How many tries would you like? "))
    tries2 = tries
    while guessnumber != tries2:
            guessnumber += 1
            guess = int(input("Enter guess number " + str(guessnumber) + ": "))
            if guess < number:
                print("You guessed too low")
                hint = input("Would you like a hint, yes or no?: ")
                if hint == "no":
                    continue
                    print("The number is less than", number + 1)
                if guess > number:
                    print("You guessed too high")
                    hint = input("Would you like a hint, yes or no?: ")
                    if hint == "no":
                        continue
                    print("The number is greater than", number - 1)
                if guess == number:
                    tries = str(tries)
                    print("YOU WON!")
                    answer = input("Play again? Yes/No? ") `enter code here`
                    if answer == 'no':
                        break
            if guess != number:
                number = str(number)
                print("GAME OVER!!! The number I was thinking of was " + number)
                answer = input("Play again? Yes/No? ")
                if answer == "no":
                    break
4

2 に答える 2

1

最も簡単な方法は、関数を使用することです。これは考えられる疑似コードです。

def game():
    tries = 0
    guess = 0
    ...
    if guess != number:
        number = str(number)
        print("GAME OVER!!! The number I was thinking of was " + number)

 answer = "yes"
 while answer == 'yes':
     game()
     answer = input("Play again? Yes/No? ")

関数は、問題をより小さく保守しやすい部分に分割するのに役立ちます。

このコードでは、コード内の変数を確実にリセットできますが、それを行うことはお勧めしません。

PS どんなゲームかは理解できますが、代わりに「課題」と書くだけなら説明を書いたほうがいいです。より明確な質問は、答えが得られる可能性が高いということです。

于 2013-06-22T01:44:44.727 に答える
1

いくつかのこと:

random.randint(1, 1) は、1 と 1 の間のランダムな整数を生成すると言っています。常に 1 を返します。

一度しか設定されていないのに、「試行」のコピーがあるのはなぜですか?

Python MATTERS のインデント。if/elif/else ブランチの評価方法を変更します。したがって、 (guess > number) および (guess == number) チェックは (guess < number) を条件としており、これは不可能です。これらの状態: (guess < number)、(guess > number)、および (guess == number) は相互に排他的であり、同じ変数を比較するため、後続の if ブロックを elif に変更するのが最善です。

「GAME OVER」は、おそらく試行が使い果たされた後にのみトリガーされる必要があるため、(guessnumber < 試行) ループ内にあることはできません。

# This is a guess the number game.
import random
answer = "yes"
number = random.randint(1, 100)

while answer != 'no':
    guess = 0
    guessnumber = 0
    tries = int(input("How many tries would you like? "))
    while guessnumber < tries:
            guessnumber += 1
            guess = int(input("Enter guess number " + str(guessnumber) + ": "))
            if guess < number:
                print("You guessed too low")
                hint = input("Would you like a hint, yes or no?: ")
                if hint == "no":
                    continue
                print("The number is less than", number + 1)
            elif guess > number:
                print("You guessed too high")
                hint = input("Would you like a hint, yes or no?: ")
                if hint == "no":
                    continue
                print("The number is greater than", number - 1)
            elif guess == number:
                print("YOU WON!")
                answer = input("Play again? Yes/No? ") #enter code here
                break
    if (guess != number) and (guessnumber >= tries):
        number = str(number)
        print("GAME OVER!!! The number I was thinking of was " + number)
        answer = input("Play again? Yes/No? ")
于 2013-06-22T01:54:13.927 に答える