@GeorgeSpotless29

Не могу понять как мне сделать условие для последнего элемента?

Напишите программу, на вход которой подаётся список чисел одной строкой.
Программа должна для каждого элемента этого списка вывести сумму двух его соседей.

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

list1 = [1, 3, 5, 6, 10]
list2 = []
le = len(list1)-1
for i in range(le):
    if i == le+1:
        tmp = list1[-2] + list1[0]
    elif i == 0:
        tmp = list1[i+1] + list1[-1]
    else:
        tmp = list1[i-1]+list1[i+1]
    list2.append(tmp)


print(list2)
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
@Drill
Чтобы не выходить за границы списка в цикле, используйте деление по модулю индекса на длину списка:

list1 = [1, 3, 5, 6, 10]
k = len(list1)

for i, _ in enumerate(list1):
    print(list1[(i-1)] + list1[(i+1)%k], end=' ')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F
Не надо никаких условий:

arrLen = len(arr)
sums = [ arr[i - 1] + arr[(i + 1) % arrLen] for i in range(arrLen) ]
print(' '.join(map(str, sums)))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы