zoukankan      html  css  js  c++  java
  • 用正则表达式实现 运算 express = '1 2* ((6030 +(40/5) *(92*5/3 +7 /3*99 /4*2998 +10 *568 /14))(4*3)/(163*2))'

    #!/usr/bin/env python
    # coding:utf-8
    import  re
    def  dealwith(express):
        express.replace('+-','-')
        express.replace('--','+')
        return express
    def  col_suanshu(exp):
        if  '/' in exp:
            a,b = exp.split('/')
            return str(float(a)/float(b))
        if  '*'  in  exp:
            a,b = exp.split('*')
            return str(float(a)*float(b))
    
    def   get_no_barcate(express):
        express =express.strip('()')
        print('>>>',express)
        while True:
            ret = re.search("-?\d+\.?\d*[*/]-?\d+\.?\d*",express)
            if  ret :
                res = col_suanshu(ret.group())
                express = express.replace(ret.group(),'+'+res)
                print('表达式',express)
                express = dealwith(express)
            else :
                ret =  re.findall('-?\d+\.?\d*',express)
                sum = 0
                for  i in ret:
                    sum +=  float(i)
                return str(sum)
    
    express =  '1  -2* ((60-30  +(-40/5)  *(9-2*5/3 +7 /3*99  /4*2998  +10 *568 /14))-(-4*3)/(16-3*2))'
    new_express =  express.replace(' ','')
    print(new_express)
    print('正确的运算结果',eval(new_express))
    while True:
        ret = re.search('\([^()]+\)',new_express)
    #    print(ret.group())
        #print(ret.group())
        if  ret:
            barcate_sum = get_no_barcate(ret.group())
            print('返回值',barcate_sum)
            new_express =new_express.replace(ret.group(),barcate_sum)
            new_express= dealwith(new_express)
        else :
             sum = get_no_barcate(new_express)
             print(sum)
             break

    I can feel you forgetting me。。 有一种默契叫做我不理你,你就不理我

  • 相关阅读:
    视频分帧
    windows开启ssh服务
    使用geopy计算经纬度表示的坐标之间的距离
    哔站视频下载
    后缀树(Suffix Tree)
    [回滚莫队] AtCoder 歴史の研究
    [长链剖分优化dp] Codeforces 1499F
    [长链剖分优化dp] BZOJ 3522/4543 Hotel
    长链剖分O(nlogn)-O(1)求K级祖先
    [数论] Codeforces 1499D The Number of Pairs
  • 原文地址:https://www.cnblogs.com/weidaijie/p/9747407.html
Copyright © 2011-2022 走看看