功能需求:
-
用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致。
-
实现加减乘除
-
满足优先级
所需知识点:
-
流程控制
-
函数
-
函数递归
-
正则表达式
-
常用数据类型列表的操作
代码逻辑:
详细代码:
为了方便明白整个逻辑过程,代码中的好多调试信息没有去掉。
1 #_*_coding:utf-8_*_ 2 __author__ = 'jieli' 3 import re 4 import sys 5 6 7 def remove_space(data_list): 8 '''去除列表中的空格元素''' 9 for i in data_list: 10 if type(i) is not int: 11 if len(i.strip()) == 0: 12 data_list.remove(i) 13 return data_list 14 15 def fetch_data_from_bracket(data_list,first_right_bracket_pos): 16 '''用递归的形式取出每一对括号里的数据并进行运算且得出结果''' 17 print 'data list:',data_list 18 19 left_bracket_pos,right_bracket_pos = data_list.index('('),data_list.index(')') +1 20 print '