需求:
实现加减乘除及拓号优先级解析
用户输入 1 – 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) – (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式
注意:不能调用eval等类似功能偷懒实现
分割线:
# -*- coding: utf-8 -*-
# @Time : 2018/10/26 22:00
# @Author : 赵伟江
importre
my_count =’1 – 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) – (-4*3)/ (16-3*2) )’
my_count = re.sub(“\ “,””,my_count)#去除字符串中所有空格
# print(my_count)
bracket = re.compile(“\(([^()]+)\)”)#选出最内部的括号
mul_sub = re.compile(“(-?\d+)(\.\d+)?(\*-)(\d+)(\.\d+)?”)#选出 a*(-b)
dev_sub = re.compile(“(-?\d+)(\.\d+)?(/-)(\d+)(\.\d+)?”)#选出 a/(-b)
defadd_sub(arg):
”’
将+ – 变 – ,将 – – 变 +
:paramarg:
: