Как поменять местами первую и вторую половины НЕЧЕТНОГО списка?
a = [4,6,7,8,1,5,3]
b = len(a) // 2
print(a[b:] + a[:b])
И не надо велосипедов изобретать, прочитай основы питона
Если же в задании строго запрещены срезы списков, то итерируйся по длине списка, прибавляй туда длину первой половины списка и бери остаток от деления на длину списка, чтобы когда твой итератор уйдёт за пределы списка, индекс перешёл в начало списка.
Не знаю, зачем тебе решение, если тебе (наверное) хочется подумать головой, но вот:def f(a):
    b = len(a) // 2
    c = []
    for i in range(len(a)):
        idx = (i + b) % len(a)
        c.append(a[idx])
    return c
P.S. Первый вариант — pythonic way. Второй — колхоз way
Спасибо за скрипт!
Но while еще не изучил.
В предыдущем ответе ув. Roman Kitaev решил вопрос 3-я строчками кода:a = [4,6,7,8,1,5,3]
b = len(a) // 2
print(a[b:] + a[:b])
Просто обалденное и красивое решение!