作者carlcarl (carl)
看板Python
標題Re: [問題] 在輸入字串中做四則運算
時間Thu Oct 18 22:09:42 2012
※ 引述《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