我正在尝试编写一个搜索一系列数字的代码,并确定用户输入的数字是否在范围内。我正在使用二进制搜索来执行此操作。
这是我写的:
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
上述程序无限运行,因为变量guess在第一次迭代后不会计算为final或initial的新值。
我尝试在没有变量的情况下调整代码,如下所示,并且有效。
WinHttp.WinHttpRequest.5.1
我无法理解为什么变量猜测没有改变。
我认为我理解变量分配,直到出现这个问题。
答案 0 :(得分:0)
每次迭代都需要更新变量。将其移动到while循环中。现在你只在开始时评估一次。