Линейный поиск не работает

Я пытаюсь создать бинарный поиск

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)
Другие вопросы по тегам