Форум сайта python.su
0
Напишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его соседей. Для элементов списка, являющихся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся список “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
Мой код
s=list(int(i) for i in input().split()) l=len(s)-1 for j in s: if s.index(j)==0: print(s[1]+s[-1],end=' ') elif s.index(j)==l: print(s[(len(s)-1)-1]+s[0],end=' ') else: for i in range(1,len(s)): if i<l: print(s[i-1]+s[i+1],end=' ')
Отредактировано pavel13079 (Март 2, 2020 20:20:16)
Офлайн
27
if s[i]>0 and s[i]<l
Отредактировано Rafik (Март 2, 2020 10:26:26)
Офлайн
0
Rafikисправил,но все равно неправильно(
1 3 5 6 10
Офлайн
27
Даю подсказку: есть хорошая встроенная функция enumerate. Пример использования со списком:
>>> spis = [5,6,7,8,9] >>> for i, v in enumerate(spis): print("Index", i, " Value", v) Index 0 Value 5 Index 1 Value 6 Index 2 Value 7 Index 3 Value 8 Index 4 Value 9
Офлайн
0
здравствуйте
Отредактировано evgeny_24 (Март 4, 2020 21:27:39)
Офлайн
0
здравствуйте
имеется список значений
нужно построить его автокорреляцию со сдвигом d:
задал функцию, но возвращаются одинаковые значения в результате
не могу определить ошибку
значения привожу условно:
trace0 = list(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , 11, 12, 13) d = 3 def fac(trace, d): length_trace = int(len(trace)) f_trace = [i*0 for i in range(d)] # нулевая матрица размерности list_d = [i for i in range(len(f_trace))] list_d.reverse() b = copy.deepcopy(list_d) for k in b: for z in range(d): for i in range(length_trace - k - 1) f_trace[z] += trace[i] * trace[i + k] return f_trace trace1 = list(fac(trace0, d)) print(trace1)
Отредактировано evgeny_24 (Март 4, 2020 22:06:08)
Офлайн
568
evgeny_24
У вас бред в каждой строке.
trace0 = list(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , 11, 12, 13)
length_trace = int(len(trace))
f_trace = [i*0 for i in range(d)]
print([i*0 for i in range(3)])
list_d = [i for i in range(len(f_trace))]
Офлайн
0
FishHook
evgeny_24У вас бред в каждой строке.
f_trace[z] += trace[i]*trace[i - k]
Отредактировано evgeny_24 (Март 4, 2020 22:33:29)
Офлайн
44
evgeny_24
срвните
test = range(5) sum1 = len(test) sum2 = int(len(test)) print(1, sum1, type(sum1)) print(2, sum2, type(sum2))
f_trace = [i*0 for i in range(d)]
print(0 * 0) print(1 * 0) print(2 * 0)
f_trace = [0, 0, 0]
f_trace = [0] * 3
и вставьте ссылку на его url Отредактировано AD0DE412 (Март 5, 2020 14:52:45)
Офлайн