Дано натуральное n, строка с n чисел. Заменить нулевые елементы на сумму двух соседниз элементов(нуль не может быть крайним элементом)

Код на котором я остановился, ничего не получается

x = input()
for i in x.split():
   

     s = int(i)
        if i == 0:
            y = x[i-1] + [i+1]
        x = x.replace("0", y)
        print(x)

По возможности простой код. Спасибо заранее.


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

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

скажите, а что это за код?

y = x[i-1] + [i+1]
  1. [i+1] - это что, где название списка?

  2. x - это строка, вы ее разбили на слова только в цикле for, поэтому обращаясь по индексу к строке вы обращаетесь к букве строки

  3. и складываете вы буквы (а лучшем случае, если бы не было ошибки 2)) вы бы складывали слова, а не числа, поскольку в целые числа вы не переводите

далее задание не очень чёткое, например что делать с последовательностью 1 0 0 0 2, что должно получиться 1 1 0 2 2? или надо избавиться вообще от нулей и получить 1 1 3 2 2

В остальном код правильный (правда и кода то не осталось, если убрать ошибки :))

arr = list(map(int, input().split()))

for i in range(1, len(arr) - 1):
    if arr[i] == 0:
        arr[i] = arr[i - 1] + arr[i + 1]

print(*arr)

Этот код переварит все и не оставит 0 вообще

А теперь можно немного поизвращаться:

Код, который оставит нули как в описанном выше примере:

arr = list(map(int, input().split()))

res = arr[:1] + [arr[i - 1] + arr[i + 1] if arr[i] == 0 else arr[i] for i in range(1, len(arr) - 1)] + arr[-1:]

print(*res)

Ну и первоначальный код можно немного поджать:

for i in range(1, len(arr) - 1):
    arr[i] = arr[i - 1] + arr[i + 1] if arr[i] == 0 else arr[i]
→ Ссылка