0

Pythonを学んでいて、現在問題解決の二分法を学んでいます。私は、0 から 100 までのユーザーの推測を取り入れ、二分法を使用してその推測を見つけようとするコードを書いています。コードは次のとおりです。

answer = raw_input('Please think of a number between 0 and 100')
#I've been using 80 as my test case 

low = 0
high = 100

guess = (low+high)/2

while guess != answer:

    if guess < answer:
        low = guess
    else:
        high = guess


    guess = (low+high)/2

私が気付いたのは、私の推測 < 回答が false の場合、else ブロックは実行されないため、私の高い数値は決して変わらないということです。なぜこうなった?ここで何かを見落としていますか?

4

1 に答える 1

4

ユーザー入力を整数に変換する必要があります(raw_input()文字列を返します):

answer = int(raw_input(...))

後で整数を文字列と比較しているため、比較は失敗します (これは Python2 では機能しますが、Python3 では機能しません)。

>>> 10 < "50"
True
>>> 75 < "50"
True
于 2015-09-11T23:24:42.777 に答える