Не думаю, что в программе есть какая-либо ошибка. Логика, однако, ошибочна, в частности: del l[i]
Вот фиксированный код:
n= int(input("Enter limit:\n"))
l= []
for i in range(1,n+1):
a = int(input("enter element: \n"))
l.append(a)
print("the original list is: ", l)
list_half = int(len(l)/2)
fh = l[:list_half] #first half of the list
sh = l[list_half:] #second half of the list
new_list = sh + fh
print("new list is: ", new_list)
Редактировать: Ответ Харша Агарвала исключает необходимость в двух списках fh и sh. Я включил два списка для лучшего понимания.