@vchelina

Прохожу курс на Stepik. Почему выдается ошибка list index out of range?

Напишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его соседей. Для элементов списка, являющихся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся список "1 3 5 6 10", то на выход ожидается список "13 6 9 15 7" (без кавычек).

Если на вход пришло только одно число, надо вывести его же.

Вывод должен содержать одну строку с числами нового списка, разделёнными пробелом.

Sample Input 1:

1 3 5 6 10
Sample Output 1:

13 6 9 15 7
Sample Input 2:

10
Sample Output 2:

10


Мой код:
# put your python code here
a = [int(i) for i in input().split()]
if len (a) == 1:
    print (a)
elif len (a) > 1:
    b = []
    for i in a: 
        if i == a[0]:
            b.append (a[1] + a[-1])
        elif i == a[-1]:
            b.append (a[-2] + a[0])
        else:
            b.append (a[i - 1] + a[i + 1])
print (b)


Failed test #1 of 16. Runtime error

This is a sample test from the problem statement!

Test input:
1 3 5 6 10
Correct output:
13 6 9 15 7

Your code output:


Error:
Traceback (most recent call last):
  File "jailed_code", line 13, in <module>
    b.append (a[i - 1] + a[i + 1])
IndexError: list index out of range
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 4
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
Ошибка потому, что вы перепутали, что такое у вас i.
Сначала это у вас один из элементов списка чисел; а потом вы его считаете индексом.

Рекомендую перестать использовать однобуквенные имена переменных и не лениться называть их по смыслу. Не for i in a:
а лучше:
for next_element in my_massive:

Тогда уж вы не перепутали бы и не стали бы обращаться к my_massive[next_element - 1]
Ответ написан
Bavashi
@Bavashi
a = [int(i) for i in input().split()]
if len (a) == 1:
    print (a)
elif len (a) > 1:
    b = []
for i in range(len(a)):
    if i == (len(a)-1):
        b.append (a[i - 1] + a[0])
        break
    b.append (a[i - 1] + a[i + 1])
print (b)
Ответ написан
mmmaaak
@mmmaaak
Разве на курсах не должно быть наставника, который должен помогать с вопросами по материалу? За это так-то и платятся деньги.
Ответ написан
@dooMoob
Советую посмотреть на эти 2 строчки
for i in a:

b.append (a[i - 1] + a[i + 1])
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 130 000 ₽
deeplay Новосибирск
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
25 окт. 2020, в 17:16
150000 руб./за проект
25 окт. 2020, в 17:09
19999 руб./за проект
25 окт. 2020, в 17:04
3000 руб./за проект