0

プレイヤーが乱数を推測しようとするゲームを作成しました (以下のコードを参照)。「低すぎる...」や「高すぎる...」などの提案も提供されます。しかし、それを逆にして、プレイヤーが選択した数字をコンピューターに推測させるのはどうでしょうか。私はこれに問題があり、その理由がわかりません。誰かからの「プッシュ」が必要だと思いますが、実際のコードではなく、自分でこれを試みる必要があると思います。これについて私を助けてくれる人がいれば幸いです。

プレイヤーが数字を推測する必要があるコード (Python 3) は次のとおりです。

#Guess my Number - Exercise 3
#Limited to 5 guesses

import random 

attempts = 1
secret_number = random.randint(1,100)
isCorrect = False
guess = int(input("Take a guess: "))

while secret_number != guess and attempts < 6:

    if guess < secret_number:
        print("Higher...")
    elif guess > secret_number:
        print("Lower...")
    guess = int(input("Take a guess: "))
    attempts += 1

if attempts == 6:
    print("\nSorry you reached the maximum number of tries")
    print("The secret number was ",secret_number) 

else:
    print("\nYou guessed it! The number was " ,secret_number)
    print("You guessed it in ", attempts,"attempts")

input("\n\n Press the enter key to exit")           

ご協力いただきありがとうございます。

4

4 に答える 4

4

ループを反復するたびに、 new が必要になりますrandom.randint(low,high)lowまた、コンピューターがユーザーに推測だと伝えたときにユーザーがどのように応答するかに基づいて、コンピューターの推測を 2 つのリスト ( ) と ( )highに収集することで把握できます。その後、あなたは通り抜けます。もちろん、初期化する必要があり、許可されている最小値と最大値を使用します。low_listhigh_listlowmax(low_list)+1highmin(high_list)-1low_listhigh_list

リストの代わりに、「高すぎる」推測の最低値と「too_low」推測の最高値を保持することができます。それはわずかに効率的で、おそらく同じ量のコーディング作業になりますが、コンピューターの推測を楽しみに振り返ることはできません:)。

于 2012-11-16T16:10:11.510 に答える
1

最小許容数から最大許容数までの範囲から始めます。これは、不明な数が範囲内のどこにでもある可能性があるためです。

各ステップで、クエリする数値を選択する必要があるため、スペースを 2 つのブロックに分割します。クエリ番号の間違った側にあるものは削除されます。最小数のクエリでこれを行う最も効率的な方法は、毎回スペースを二等分することです。

ゲームを整数に制限することをお勧めします。そうしないと、許容範囲や精度などに関して、浮動小数点値をいじり回すことになります。

于 2012-11-16T16:17:44.033 に答える
1

数値の範囲が (a,b) であることがわかっていると仮定します。

範囲を狭める方法を考えてください。途中で推測することから始めます。推測が低かった場合は、最後の推測と最高値の間で推測します。値が高かった場合は、可能な限り低い値と最後の推測の間で推測します。範囲を繰り返し狭めることで、最終的に数を見つけることができます。

このための疑似コードを次に示します。

loop{

guess = (a+b)/2

if high:
    b = guess - 1
else if low:
    a = guess + 1
else:
    guess = answer
}
于 2012-11-16T16:19:16.387 に答える