Я должен попросить пользователя ввести число, а затем напечатать все числа, предшествующие этому, но я должен вставить 0 после каждого четного числа. Я новичок в Python, поэтому многого не знаю.
n=0
length_even=[]
length_odd=[]
def length_list(n):
length=int(input('Enter the length of the list: '))
for i in range(1,length+1):
if (i%2 != 0):
length_odd.append(i)
elif (i%2 == 0) :
length_even.append(i)
length_even.insert(i,0)
total=length_odd+length_even
return total
length_list(n)
Если пользователь вводит 5, я ожидаю, что вывод будет [1,2,0,3,4,0,5], но фактический вывод будет (1,3,5,2,0,4,0].
Проблема в том, что вы создаете два независимых списка (length_even и length_odd) и объединяете их (оператор +
) после добавления значений в каждый список (length_odd содержит: 1,3,5
, а length_even содержит: 2,0,4,0
). Таким образом, вы получаете следующий результат: 1,3,5,2,0,4,0
. Почему бы вам просто не использовать один список? Взгляните на код ниже (я сделал лишь небольшие изменения, чтобы избежать путаницы):
n=0
lengthList = []
def length_list(n):
length=int(input('Enter the length of the list: '))
for i in range(1,length+1):
if (i%2 != 0):
lengthList.append(i)
elif (i%2 == 0) :
lengthList.append(i)
lengthList.append(0)
return lengthList
length_list(n)