我的任务是转换一个完全带括号的中缀表达式。例子
(((54+56)+(4+73))+(9+7))
后缀。然后评估后缀。表达式是用户输入的。我必须使用已经为我编写的名为 Stack 的类。不得修改:
class Stack:
def __init__(self):
self.theStack=[]
def top(self):
if self.isEmpty():
return "Empty Stack"
else:
return self.theStack[-1]
def isEmpty(self):
return len(self.theStack)==0
def push(self,item):
self.theStack.append(item)
def pop(self):
if not self.isEmpty():
temp=self.theStack[-1]
del(self.theStack[-1])
return temp
else:
return "Empty Stack"
我遇到的第一个问题是,当用户输入例如 54 时,在使用堆栈时,5 和 4 是两个不同的元素。我怎样才能把它变成一个?
这是我到目前为止评估后缀的代码:
OPERATOR=["+","-","*", "/"]
def evaluatePostfix(Postfix):
eStack=Stack()
for n in Postfix:
if n not in OPERATOR and n!="(" and n!=")":
eStack.push(n)
if n in OPERATOR:
math=eStack.pop()+n+eStack.pop()
eval(math)
我知道问题是倒数第二行,但我不知道如何解决