zoukankan      html  css  js  c++  java
  • 开发一个简单的python计算器

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

    2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致

     1 import re
     2 def func(a):
     3     while True:
     4         if '*' in a:
     5             c = a.split('*')
     6             if '/' in c[0]:
     7                 a = div(a)
     8             else:
     9                 a = mul(a)
    10         elif '/' in a:
    11             a = div(a)
    12         else:
    13             a = add(a)
    14             return a
    15 def mul(a):
    16     b = re.search(r'd+.?d**-?d+.?d*', a)
    17     if b:
    18         b = b.group()
    19         l=b.split("*")
    20         c=float(l[0])*float(l[1])
    21         res = re.sub(r'd+.?d**-?d+.?d*', str(c), a,1)
    22         return res
    23 def div(a):
    24     b = re.search(r'd+.?d*/-?d+.?d*', a)
    25     if b:
    26         b = b.group()
    27         l=b.split("/")
    28         c=float(l[0])/float(l[1])
    29         res = re.sub(r'd+.?d*/-?d+.?d*', str(c), a,1)
    30         return res
    31 def add(a):
    32     if '--' in a:
    33         a = a.replace('--', '+')
    34     b = re.findall(r'-?d+.?d*', a) #把负数两个字符看成一个整体
    35     c=0
    36     for i in b:
    37         c+=float(i)
    38     return c
    39 def caculate():
    40     a = ''.join(input('请输入计算公式(如1-2*((60-30+(-40/5))等此类:').split())#把输入字符串以空格切片然后在拼接
    41     while True:
    42         if '(' in a:
    43             b = re.search(r'(([^()]+))', a)
    44             if b:
    45                 c = b.group()
    46                 d = func(c)
    47                 a = re.sub(r'(([^()]+))', str(d), a, 1)
    48         else:
    49             print(func(a))
    50             break
    51 caculate()
  • 相关阅读:
    java免费空间!最简单的openshift免费空间上传代码教程!和FTP一样简单!
    医疗大数据解决方案
    十大经典排序算法的JS版
    读取某个目录下的所有图片并显示到pictureBox
    一些植物查询的网站链接
    植物野外识别速查图鉴
    Winform改变Textbox边框颜色
    Microsoft Access数据库操作类(C#)
    自定义GroupBox
    ArrayList用法整理
  • 原文地址:https://www.cnblogs.com/lixiaomingpython/p/6791198.html
Copyright © 2011-2022 走看看