python 求值表示式解析

2021-06-18 04:48:25 字數 708 閱讀 4785

採用中綴轉字尾的演算法。

注意我輸入的格式。

#注意格式

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:

else:

else: #如果st[i]優先順序比棧頂低,opt棧中依次放到num中,然後再把st[i]入opt棧

if st[i]=="(": #優先順序低於棧頂元素的,可能是 加減乘除,也可能是"("。如果碰到 "("則 直接入棧

else:

while(dictopt[st[i]]其實還有一種簡單的方法解析算術表示式:

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

val=eval(st)

print val

表示式求值

程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...

表示式求值

既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...

表示式求值

寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...