看板 Python 關於我們 聯絡資訊
※ 引述《cantakeyeofu (不看你的眼)》之銘言: : 請教一下 : 若使用者在raw_input()中輸入類似這樣: : 12+3 : 10-7 : 然後希望能印出15和3的四則運算結果 : 應該如何把 "12" "+" "3" 這三個字元拆開來做計算? 謝謝 簡單+-*/的話 str = '15+3-2/1' re.split("[+-\/\*]", str) ['15', '3', '2', '1'] re.split("\d+", str) ['', '+', '-', '/', ''] # 前後兩個空就自己處理掉 之後如果要處理括弧的話可能還要再改一下 不知道這樣有沒有什麼其他問題@@ 接著再做中序轉後序 最後用後序來算值 -- http://blog.carlcarl.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.230.133
SansWord:先乘除後加減要怎麼處理 10/19 09:24
SansWord:要處理括號的話要大改。 10/19 09:25
SansWord:我覺得用reg檢查輸入字串只能有 +-*/數字左括右括空白 10/19 09:26
SansWord:然後就直接丟eval好了....雖然還是很evil 10/19 09:26
keitheis:還是不建議用 eval,拆開後用 if operator == "+": ... 10/19 09:38
keitheis:的方式會比較清楚發生什麼事,而非任 eval 宰割 XD 10/19 09:40
carlcarl:中序轉後序的部份對於加減乘除的順序處理已經有定義 10/19 17:23
carlcarl:括弧的話 google一下可以查到大概怎麼處理的方法 10/19 17:25
tjjh89017:可以把+直接丟eval啦,如果spilt正確了話 10/19 21:28