Ошибка во время выполнения в программе python, преобразующей инфикс в постфикс

#python #runtime-error #postfix-mta

#python #ошибка во время выполнения #постфикс-mta

Вопрос:

Я написал программу на Python, которая преобразует инфиксное математическое выражение в постфиксное. это очень хорошо работает для некоторых входных данных, таких как A-((B C) * D-E) * F или (A B) * C. но когда я отправляю сайт оценки кода, говорится, что ошибка времени выполнения существует. можете ли вы сказать мне, почему в моем коде есть ошибка во время выполнения и как это исправить?

 str = input()
result = ''
stack = []

def getorder(c):
    return {'*':5, '/':5, ' ':3, '-':3, '(':1}[c]

def whoisfirst(x, y):
    if(getorder(x) > getorder(y)):
        return 1;
    elif(getorder(x) < getorder(y)):
        return -1;
    else:
        return 0;

for i in str:
    if(i.isalpha()):
        result  = i
    else:
        if (i == '('):
            stack.append(i)
            continue
        elif (i == ')'):
            while True:
                result  = stack.pop(-1)

                if(stack[-1] == '('):
                    stack.pop(-1)
                    break
            continue


        if not stack:
            stack.append(i)
        else:
            while (whoisfirst(i, stack[-1]) != 1):
                result  = stack.pop(-1)

                if not stack:
                    break
            stack.append(i)

while stack:
    result  = stack.pop(-1)

print(result)
 

Комментарии:

1. это codechef? вы запускали или отправляли?

2. Это не codechef, это baekjoon, корейский сайт. Я запустил программу для некоторого тестового примера и отправил ее, но сайт сообщил об ошибке во время выполнения…