# 实现带括号的复杂加减乘除优先级运算
# 主要运用到了正则表达式、while循环、列表的几种方法等。
# 为实现要求的运算功能该代码共分为两个部分,一个是实现不带括号的加减乘除运算的函数add_sub_mul_div
# 另外一个是一个循环加6行代码来不断去掉最内层括号并完成括号内表达式,该部分将不断调用函数add_sub_mul_div
# 实例 a = '1-2*(3+4/((5-6*7)+8)*9/10-(11+12)*13*14/15/(16-17)/18/19)*20'
# 运算结果 a = -146.67385897694427
# 代码正文:
1 importre2 a = '1-2*(3+4/((5-6.0*7)+8)*9/10-(11+12)*13*14/15/(16-17)/18/19)*20'
3 b = re.findall('([\d\.]+|-[\d\.]+|\+|/|\*|-|\(|\))', a)4
5
6 defadd_sub_mul_div(exp):7 #完成复杂的不带括号的加减乘除运算
8 sum =09 while '*' in exp and '/' inexp:10 #遵循乘除运算从左到右计算
11 i = exp.index('*')12 j = exp.index('/')13 if i