Программа выдает ошибку IndexError: list index out of range

Необходимо найти длину поездки в лифте в количестве проеханых этажей, числа в массиве указывают на каой этаж приезжал лифт, всего в здании 30 этажей.

array = [1, 2, 3]
def elevator_distance(array):
    dist = 0
    for i in range(0, len(array)-1):
        if array[i] < array[i + 1]:
            s = array[i + 1] - array[i]
            dist = dist + s
            i += 1
        if array[i] > array[i + 1]:
            s = array[i] - array[i + 1]
            dist = dist + s
            i += 1
    return (dist)
print(elevator_distance(array))


Ответы (2 шт):

Автор решения: Zhihar

ну а что вы хотите?

у вас есть основной цикл -

for i in range(0, len(array)-1):

в котором i меняется каждый цикл на 1

а внутри этого цикла вы делаете

i += 1

и конечно сразу выходите за диапазон

у вас же в цикле дополнительно i += 1 не происходит только в 1 случае, когда array[i] == array[i + 1]

если я правильно понял, то ваш код должен делать следующее:

def elevator_distance(array):
    return sum(abs(array[i + 1] - array[i]) for i in range(len(array) - 1))
→ Ссылка
Автор решения: n1tr0xs

Лучше используйте ответ от @Zhihar
Но если нужно "по-простому":

array = [1, 2, 3]

def elevator_distance(array):
    dist = 0
    for i in range(len(array)-1):
        if array[i] < array[i+1]:
            s = array[i+1] - array[i]
            dist += s
        if array[i] > array[i+1]:
            s = array[i] - array[i+1]
            dist += s
    return dist

print(elevator_distance(array))

Или так:

array = [1, 2, 3]

def elevator_distance(array):
    dist = 0
    for i in range(len(array)-1):
        dist += abs(array[i] - array[i+1])
    return dist

print(elevator_distance(array))
→ Ссылка