Как исправить ошибки?
Ваш код - полная чепуха, ошибка нанизывается на ошибку, не вижу смысла их перечислять. Вот так примерно это делается:def partition(cap, lim):
    if cap <= lim:
        yield (cap,)
    for head in range(min(cap - 1, lim), 0, -1):
        for tail in partition(cap - head, head):
            yield (head,) + tail

for p in partition(5, 5):
    print('+'.join(map(str, p)))
А вам следует приложить усилия к освоению основ языка - там у вас пока всё плохо.
В списке А один элемент в начале. после вызова A.pop() единственный элемент удаляется, поэтому while делает только одну итерацию. а вообще неправильные названия переменных и метода. имхо, это больше чем извращение называть переменные и методы одной буквой