作者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
1F:推 SansWord:先乘除後加减要怎麽处理 10/19 09:24
2F:→ SansWord:要处理括号的话要大改。 10/19 09:25
3F:→ SansWord:我觉得用reg检查输入字串只能有 +-*/数字左括右括空白 10/19 09:26
4F:→ SansWord:然後就直接丢eval好了....虽然还是很evil 10/19 09:26
5F:推 keitheis:还是不建议用 eval,拆开後用 if operator == "+": ... 10/19 09:38
6F:→ keitheis:的方式会比较清楚发生什麽事,而非任 eval 宰割 XD 10/19 09:40
7F:→ carlcarl:中序转後序的部份对於加减乘除的顺序处理已经有定义 10/19 17:23
8F:→ carlcarl:括弧的话 google一下可以查到大概怎麽处理的方法 10/19 17:25
9F:→ tjjh89017:可以把+直接丢eval啦,如果spilt正确了话 10/19 21:28