Линейный поиск не работает
Я пытаюсь создать бинарный поиск
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
, Любая помощь будет принята с благодарностью.
1 ответ
and
оператор является оператором короткого замыкания, поэтому он только оценивает аргумент в RHS, если аргумент в LHS, если True
, В вашем случае это создает ошибку индекса. Поменяйте местами порядок условных выражений, и ваш код будет отлично работать:
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)