zoukankan      html  css  js  c++  java
  • python(32)- 模块练习Ⅱ:使用正则表达式实现计算器的功能

    开发一个简单的python计算器

    实现加减乘除及拓号优先级解析

    用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,

    必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,

    结果必须与真实的计算器所得出的结果一致

    import re
    def func(a):
        while True:
            if '*' in a:
                c = a.split('*')
                if '/' in c[0]:
                    a = div(a)
                else:
                    a = mul(a)
            elif '/' in a:
                a = div(a)
            else:
                a = add(a)
                return a
    def mul(a):
        b = re.search(r'd+.?d**-?d+.?d*', a)
        if b:
            b = b.group()
            l=b.split("*")
            c=float(l[0])*float(l[1])
            res = re.sub(r'd+.?d**-?d+.?d*', str(c), a,1)
            return res
    def div(a):
        b = re.search(r'd+.?d*/-?d+.?d*', a)
        if b:
            b = b.group()
            l=b.split("/")
            c=float(l[0])/float(l[1])
            res = re.sub(r'd+.?d*/-?d+.?d*', str(c), a,1)
            return res
    def add(a):
        if '--' in a:
            a = a.replace('--', '+')
        b = re.findall(r'-?d+.?d*', a) #把负数两个字符看成一个整体
        c=0
        for i in b:
            c+=float(i)
        return c
    def caculate():
        a = ''.join(input('请输入计算公式如1-2*(60-30+(-40/5))等此类:').split())#把输入字符串以空格切片然后在拼接
        while True:
            if '(' in a:
                b = re.search(r'(([^()]+))', a)
                if b:
                    c = b.group()
                    d = func(c)
                    a = re.sub(r'(([^()]+))', str(d), a, 1)    
            else:
                print(func(a))
                break
    caculate()  
    

      

  • 相关阅读:
    linux rz -e
    (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
    Searching the Web论文要点
    搜索提示(search suggest)文献阅读
    C++常用数据结构(对照python)
    FM,FFM,GBDT推导
    Ranking relevance in yahoo search (2016)论文阅读
    荀子劝学篇
    不要尝试去锯木屑
    3服务器Java虚拟机配置
  • 原文地址:https://www.cnblogs.com/xuyaping/p/6798153.html
Copyright © 2011-2022 走看看