私の仕事は、完全に括弧で囲まれた中置式を変換することです。例
(((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 が 2 つの異なる要素になることです。どうすればそれを1つに変えることができますか?
これまでのところ、後置を評価するコードは次のとおりです。
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)
問題が最後から 2 番目の行であることはわかっていますが、修正方法がわかりません