Имеется список целых чисел Измените исходный список, вставив элемент со значением k между всеми соседними элементами списка, имеющими одинаковый знак

Рейтинг: -4Ответов: 1Опубликовано: 09.03.2023

Имеется список целых чисел. Измените исходный список, вставив элемент со значением k между всеми соседними элементами исходного списка, имеющими одинаковый знак. Считать, что 0 имеет общий со своими соседями знак.

Формат входных данных

В первой строке вводится последовательность целых чисел через пробел – элементы списка. Во второй строке вводится целое число k.

Формат выходных данных

Требуется вывести измененный список.

входные данные

1 0 9 4 2 9 55

выходные данные

1 55 0 55 9 55 4 55 2 55 9

входные данные

1 -10 -10 3 -5 0 -1 5 9 10 55

выходные данные

1 -10 55 -10 3 -5 55 0

Мой код:

s=list(map(int,input().split()))
k=int(input())
i=0
while i<len(s):
    if s[i]>0 and s[i+1]>0:
        s[i+2]=s[i+1]
        s[i+1]=k
    elif s[i]<0 and s[i+1]<0:
        s[i+2]=s[i+1]
        s[i+1]=k
    else:
        i+=1
    print(*s)

Ответы

▲ 0

Твоя проблема в том, что ты работя с одним и тем же списком и добавляя элемент в него не сдвигаешь все остальные элементы назад. На твоем месте я бы не трогал исходный список а пытался сформировать новый в который попадут элементы старого списка + элемент k по мере необходимости

например так:

input_list = list(map(int, input().split()))
k = int(input())
i = 0
result_list = []
result_list.append(input_list[0])  
for current_element in input_list[1:]:
    if any((
            current_element > 0 and result_list[-1] > 0,
            current_element < 0 and result_list[-1] < 0,
            current_element == 0 or result_list[-1] == 0
    )):  # нужно между элементами вставить k. 
        result_list.append(k)
    result_list.append(current_element)
print(result_list)

условие внутри if можно упростить на current_element * result_list[-1] >= 0

у тебя, ктати, второй пример имеет некорректный вывод (результат короче исходного списка)

П.с.: при выборе названий для переменных не экономь буквы, называй их как-то осмысленно, чтобы легче было читать твой код