python基础-6.2正则表达式,计算器练习

content = "1-2*((60-30+(1-40/5*5+3-2*5/3)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"
def func(string):
    new_list = re.split("\(([^()]+)\)", string, 1)
    if len(new_list) > 1:
        new_string = new_list[0] + str(eval(new_list[1])) + new_list[2]
        return func(new_string)
    else:
        return new_list[0]

print(eval(func(content)))


1、先分割最小括号,"\(([^()]+)\)"
2、用eval来计算最小括号内容,eval取巧了,可以再次用正则来计算。
3、在拼接成新的字符串
4、递归
5、返回无括号的字符串

 

posted @ 2017-03-14 08:15  崔崔0624  阅读(154)  评论(0编辑  收藏  举报
TOP