我甚至对这个问题感到尴尬,但是因为某种原因python不断给我一个错误我的“l”
def binary_search(l, targetValue):
low = 0, high = len(array)
while low <= high:
mid = (high - low)/2
if l[mid] == targetValue:
return "we found it!"
elif l[mid] > targetValue:
low = mid - 1;
else l[mid] < targetValue: #this line seems to be the problem
high = mid + 1;
print "search failure :( "
答案 0 :(得分:6)
虽然你的间距不正常,但实际上这不是问题。
问题是由于您将else
与表达式一起使用。相反,您需要使用elif
:
elif l[mid] < targetValue:
或者,甚至更好,完全摆脱表达式,因为您已经测试了l[mid] == targetValue
和l[mid] > targetValue
:
else:
else
表示“为了其他任何事情,请执行此操作”。因此,它不评估也不支持表达。
答案 1 :(得分:2)
您的最后一行“#this line似乎是问题”应该是ELIF或ELSE,之后没有声明。 例如,您不需要“ELSE {Condition}”。 ELSE的意思是“其他一切。”