python 求值表达式解析

采用中缀转后缀的算法。

注意我输入的格式。


#注意格式
def suffix(st):
   listopt=[" "]
   listnum=[" "]

   for i in range(0,len(st)):
       if(differ(st[i])==1): #判断,对运算符操作
           if(len(listopt)):
               if(dictopt[st[i]] > dictopt[listopt[len(listopt)-1]]):#优先级比栈顶高,入栈
                  if st[i]==")":
                     while(1):
                        tmp=listopt.pop()
                        if tmp=="(":
                           break
                        else:
                           listnum.append(tmp)
                           listnum.append(" ")
                  else:
                     listopt.append(st[i])
                  
               else:                      #如果st[i]优先级比栈顶低,opt栈中依次放到num中,然后再把st[i]入opt栈
                  if st[i]=="(":       #优先级低于栈顶元素的,可能是 加减乘除,也可能是"("。如果碰到 "("则 直接入栈
                     listopt.append(st[i])
                  else:
                     while(dictopt[st[i]]

其实还有一种简单的方法解析算术表达式:

st="(1 + 2) * 3 - 5"
val=eval(st)
print val


你可能感兴趣的:(python)