Программа выдает ошибку 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))