2017-10-04 85 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循环。现在你只在开始时评估一次。