开发一个简单的python计算器,,1.实现加减乘除及拓


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 a15 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 res23 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 res31 def add(a):32     if ‘--‘ in a:33         a = a.replace(‘--‘, ‘+‘)34     b = re.findall(r‘-?\d+\.?\d*‘, a) #把负数两个字符看成一个整体35     c=036     for i in b:37         c+=float(i)38     return c39 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             break51 caculate()

开发一个简单的python计算器

评论关闭