Re: [問題] 在輸入字串中做四則運算

看板Python作者 (carl)時間11年前 (2012/10/18 22:09), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《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

10/19 09:24, , 1F
先乘除後加減要怎麼處理
10/19 09:24, 1F

10/19 09:25, , 2F
要處理括號的話要大改。
10/19 09:25, 2F

10/19 09:26, , 3F
我覺得用reg檢查輸入字串只能有 +-*/數字左括右括空白
10/19 09:26, 3F

10/19 09:26, , 4F
然後就直接丟eval好了....雖然還是很evil
10/19 09:26, 4F

10/19 09:38, , 5F
還是不建議用 eval,拆開後用 if operator == "+": ...
10/19 09:38, 5F

10/19 09:40, , 6F
的方式會比較清楚發生什麼事,而非任 eval 宰割 XD
10/19 09:40, 6F

10/19 17:23, , 7F
中序轉後序的部份對於加減乘除的順序處理已經有定義
10/19 17:23, 7F

10/19 17:25, , 8F
括弧的話 google一下可以查到大概怎麼處理的方法
10/19 17:25, 8F

10/19 21:28, , 9F
可以把+直接丟eval啦,如果spilt正確了話
10/19 21:28, 9F
文章代碼(AID): #1GW0sfJv (Python)
討論串 (同標題文章)
文章代碼(AID): #1GW0sfJv (Python)