需求描述:
1、实现加减乘除及拓号优先级解析
2、用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果
实现代码:
1 import re 2 import functools 3 4 5 def minus_operator_handler(formula): 6 '''处理一些特殊的减号运算''' 7 minus_operators = re.split("-",formula) 8 calc_list= re.findall("[0-9]",formula) 9 if minus_operators[0] == '': #第一值肯定是负号 10 calc_list[0] = '-%s' % calc_list[0] 11 res = functools.reduce(lambda x,y:float(x) - float(y), calc_list) 12 print("