1

次のタスクは、現在のコードを変更することです。前の演習では、数字を推測するゲームをカバーする基本的なアプリケーションを作成しました。コードは次のとおりです。-

# Guess My Number
#
# The computer picks a random number between 1 and 100
# The player tries to guess it and the computer lets
# the player know if the guess is too high, too low
# or right on the money

import random  

print("\tWelcome to 'Guess My Number'!")
print("\nI'm thinking of a number between 1 and 100.")
print("Try to guess it in as few attempts as possible.\n")

# set the initial values
the_number = random.randint(1, 100)
guess = int(input("Take a guess: "))
tries = 1

# guessing loop
while guess != the_number:
    if guess > the_number:
        print("Lower...")
    else:
        print("Higher...")

    guess = int(input("Take a guess: "))
    tries += 1

print("You guessed it!  The number was", the_number)
print("And it only took you", tries, "tries!\n")

input("\n\nPress the enter key to exit.")

私の仕事は、これを変更して、失敗メッセージがユーザーに表示されるまでの回数が制限されるようにすることです。これまでのところ、この章では「if、elif、else、for、ループ、無限ループの回避」について説明してきました。そのため、これらの概念のみに対応するように制限したいと思います。forループについては次の章で説明します。

私は何を試しましたか?

これまでのところ、5 goとtrys変数を使用して別のwhileループでブロックを修正しようとしましたが、機能していないようです。

# guessing loop
while tries < 6:
    guess = int(input("Take a guess: "))
    if guess > the_number:
        print("Lower...")
    elif guess < the_number:
        print("Higher...")
    elif guess == the_number:
        print("You guessed it!  The number was", the_number)
        print("And it only took you", tries, "tries!\n")
    break
    tries += 1

input("You didn't do it in time!")
input("\n\nPress the enter key to exit.")

私が見逃したものについてのポインタやハイライトは、私が見逃したものについての説明に加えていただければ幸いです。プログラム的に考えることを自分自身に教えることも、トリッキーであることを証明しています。

動作しないもの 実行すると、ループ条件が動作していないように見えます。私のアイドルフィードバックは次のとおりです。

これは、私の質問を次のように要約できることを意味します。ループロジックはどこで壊れていますか?

>>> ================================ RESTART ================================
>>> 
    Welcome to 'Guess My Number'!

I'm thinking of a number between 1 and 100.
Try to guess it in as few attempts as possible.

Take a guess: 2
Take a guess: 5
Higher...
You didn't do it in time!


Press the enter key to exit.
4

2 に答える 2

2

問題は、あなたのbreakステートメントがインデントされていないことですelif:

elif guess == the_number:
    print("You guessed it!  The number was", the_number)
    print("And it only took you", tries, "tries!\n")
break

したがって、ループは常に最初の繰り返しの後に停止します。をインデントしbreakて に含めるelifと、機能するはずです。

于 2013-03-01T16:08:10.110 に答える
0

ブレークは条件にありません。その前にタブを追加します。

于 2013-03-01T16:10:11.333 に答える