1

私たちの課題は、0 から 100 までの秘密の数字を推測するコードを書くことです。これが私のコードです。

low = 0
mid = 50
high = 100
secretnum = "Is your secret number " + str(mid) + "?"
print"Please think of a number between 0 and 100!"
print secretnum
herp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")
while herp != 'c':
    if herp == 'h':
        high = mid
        mid = int((mid + low)/2)
    elif herp == 'l':
        low = mid
        mid = int((mid + high)/2)
    else:
        print"Sorry, I did not understand your input."
    print secretnum
    herp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")
if herp == 'c':
    print "Game over. Your secret number was: " + str(mid)

これは出力です:

Is your secret number 50?
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. h
Is your secret number 50?
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. l
Is your secret number 50?
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. c
Game over. Your secret number was: 37
4

8 に答える 8

2

Raufioが指摘したように、Python文字列は不変です。50が何度も繰り返されるという問題を回避するには、質問を印刷するときにstr(mid)を再度呼び出す必要があります。例えば:

low = 0
mid = 50
high = 100
secretnum = "Is your secret number: " 
print"Please think of a number between 0 and 100!"
print secretnum + str(mid) + "?"
herp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")
while herp != 'c':
    if herp == 'h':
        high = mid
        mid = int((mid + low)/2)
    elif herp == 'l':
        low = mid
        mid = int((mid + high)/2)
    else:
        print"Sorry, I did not understand your input."
    print secretnum + str(mid) + "?"
    herp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")
if herp == 'c':
    print "Game over. Your secret number was:", mid
于 2013-02-13T02:01:47.783 に答える
2

エラーの場合は、次のように変更します。

print "Game over. Your secret number was:",mid

何度も 50 を出力するprint secretnumには、while を次のように変更します。

print "Is your secret number " + str(mid) + "?"

最初に設定secretnum="Is your secret number " + str(mid) + "?"すると、ミッドから完全に分離されたストリングが作成されます。そのため、ミッドを変更しても、弦には変化が見られません。

Python 文字列は不変です。つまり、作成したら完了です。文字列を完全に作り直さない限り、文字列の内容を変更することはできません。str(mid)の文字列表現を作成しますmid。この場合、文字列"50"が作成されて文字列に挿入され、変更されることはありません。したがって、文字列を表示しているときは、再度呼び出して最新の値が表示されていることを確認する必要がありますstr(mid)

于 2013-02-13T01:42:16.577 に答える
1

最後の行に次のように入力します。

print "Game over. Your secret number was: " + str(mid)

これは、python が、int と文字列ではなく、2 つの文字列を一緒に追加していることを本当に知っていることを確認したいためです。これは禁止されています。str() 関数は、与えられたものを単純に文字列に変更します。セマンティクスの問題に関しては、このバージョンのコードは予想どおりの動作をしていると思います。

low = 0  
mid = 50  
high = 100  
print "Please think of a number between 0 and 100!"  
herp = 50  
while herp != 'c':  
    print "Is your secret number " + str(mid) + "?"
    herp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is to low. Enter 'c' to indicate the guess is correct")   
    if herp == 'h':  
        high = mid  
        mid = int((mid + low)/2)  
    elif herp == 'l':  
        low = mid  
        mid = int((mid + high)/2)  
    else:  
        print"Sorry, I did not understand your input."  
if herp == 'c':  
    print "Game over. Your secret number was: " + str(mid) 
于 2013-02-13T01:47:58.567 に答える
0

コードを作成していたとき、最初は同じ問題がありました。コードを確認した後、いくつかのエラーに気付きました。ここで強調表示します。

  1. raw_input を使用してユーザーに番号を尋ねませんでした
  2. しばらくの間、「c」パラメーターを使用しないでください
  3. あなたの while は raw_input 質問の後に来るべきです

    num = raw_input("0から100までの数字を考えてください!")

    while mid != num:
        print ( "Is your secret number " + str(mid) + "?")
        herp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")
    

これを参照してください。while を使用しているため、mid がユーザーが選択した数と異なるまで実行されます。それを印刷することが非常に重要です。そうしないと、選択した後にプログラムの新しい推測を見ることができません。最初の推測が低すぎるか高すぎる。

  1. "mid = int(low + high)/2" を何度も繰り返す必要はありません。else の後に使用するだけで、while ループが実行されるたびに mid の値が変更されます。
  2. if/elif/else コードは文字「c」で始める必要があります
  3. 「print secretnum」行とその後の行を削除できます

    Herp == 'c' の場合:

            break
        elif herp == 'l':
            low = mid
    
        elif herp == 'h':
            high = mid
    
        else:
            print"Sorry, I did not understand your input."
        mid = int(low + high)/2
    print "Game over. Your secret number was: " + str(mid)
    

    "break" を使用して while ループを抜けたことに注意してください。したがって、Game over というメッセージが表示されます。Your secret number was: " + str(mid) が出力されます。

最終結果は次のようになります。

low = 0
high = 100
mid = (high + low)/2

num = raw_input("Please think of a number between 0 and 100!")

while mid != num:
    print ( "Is your secret number " + str(mid) + "?")
    herp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")

    if herp == 'c':
        break
    elif herp == 'l':
        low = mid
        #mid = int(mid + high)/2
    elif herp == 'h':
        high = mid
        #mid = int(mid + low)/2
    else:
        print"Sorry, I did not understand your input."
    mid = int(low + high)/2
print "Game over. Your secret number was: " + str(mid)
于 2013-02-16T02:47:32.400 に答える
0

以下のコードを試してください...

max_num=100
min_num=0
guess = int(abs(max_num/2))
print("Please think of a number between 0 and 100!")
for i in range(min_num,max_num):
  text = "Is your secret number "+str(guess)+"?\nEnter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. "
  xx = raw_input(text)
  if(xx == 'h'):
    max_num = guess
    guess = int((guess + min_num)/2)
  elif(xx == 'l'):
    min_num = guess
    guess = int((guess + max_num)/2)
  elif(xx == 'c'):
    print("Game over. Your secret number was:"+str(guess))
  else:  
    print("Sorry, I did not understand your input.")
    xx = str(input(text))
于 2016-09-16T09:53:28.043 に答える