首页 > 代码库 > 开发一个简单的python计算器
开发一个简单的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()
开发一个简单的python计算器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。