#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, корейский сайт. Я запустил программу для некоторого тестового примера и отправил ее, но сайт сообщил об ошибке во время выполнения…