Добро пожаловать в Stackoverflow. Как новичку в python, вам определенно следует рассмотреть возможность использования визуализатора python для понимания всей логики c кода. см. здесь
Выполнение вашего кода дает следующий вывод:
['1234', '-', '4332', '/', '23', '+', '13', '+', '12', '+', '3213']
[5]
['1234', '-', '4332', '/', '23', '13', '+', '12', '+', '3213']
[5, 6]
['1234', '-', '4332', '/', '23', '13', '12', '+', '3213']
[5, 6, 7]
['1234', '-', '4332', '/', '23', '13', '12', '3213']
И, очевидно, когда больше не остается '+', вы получите ошибку, которая
ValueError: '+' отсутствует в списке
Так как же это происходит?
1 znakik.append(num.index('+'))
2 num.pop(num.index('+'))
В строке 2 вы получаете «+» из массива на каждой итерации, т.е. значение индекса хранится в массиве znkakik
. Как только вы сделаете это для всех, у вас не останется больше «+», а затем ошибка.