Дано натуральное 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 шт):
скажите, а что это за код?
y = x[i-1] + [i+1]
[i+1]- это что, где название списка?x- это строка, вы ее разбили на слова только в циклеfor, поэтому обращаясь по индексу к строке вы обращаетесь к букве строкии складываете вы буквы (а лучшем случае, если бы не было ошибки 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]