2017-10-04 117 views
0

我試圖編寫一個代碼來搜索數字範圍,並計算出用戶輸入的數字是否在範圍內。我正在使用二進制搜索來執行此操作。變量賦值工作不正常

這裏是我寫的東西:

initial = 0 
final = 10000 
guess = (initial + final)//2 

num = int(input("Enter Number")) 

while True: 
    if guess == num: 
     print(guess, "is in our list. Congratulation!") 
     break 
    elif guess > num: 
     final = guess 
    else: 
     initial = guess 

上述程序運行無限,作爲變量的猜測不求值最終或初始的第一次迭代後的新價值。

我試着調整沒有變量的代碼,如下圖所示,它工作。

initial = 0 
final = 1000 

guess = (initial + final)//2 
num = int(input("Enter Number")) 

while True: 
    if (initial + final)//2 == num: 
     print((initial + final)//2, "is in our list. Congratulation!") 
     break 
    elif (initial + final)//2 > num: 
     final = (initial + final)//2 

    else: 
     initial = (initial + final)//2 

我不明白爲什麼變量猜測沒有改變。

我以爲我理解變量賦值直到出現這個問題。

+2

您需要更新循環中的'guess'變量*。變量不是'活的',* result *被賦值,而不是表達式。 –

+0

好的,謝謝。這是有道理的 – Tpenny

回答

0

變量需要每次迭代更新。將其移入while循環。現在你只在開始時評估一次。