我正在尝试创建二进制搜索
L = [0, 1, 2]; X= 3;i=0
while (L[i]!= X)and (i < len(L)):
i = i+1
if i==len(L):
print('Not here!')
else:
print(X, 'at position', i)
但是我的while循环和IndexError
存在问题。任何帮助将不胜感激。
答案 0 :(得分:3)
and
语句是short-circuit operator,因此如果LHS上的参数为True
,它仅评估RHS上的参数。在您的情况下,这会创建索引错误。交换条件的顺序,您的代码将完美运行:
L = [0, 1, 2]; X= 3;i=0
while (i < len(L)) and (L[i]!= X):
i = i+1
if i==len(L):
print('Not here!')
else:
print(X, 'at position', i)