计算器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算器相关的知识,希望对你有一定的参考价值。
1 #!/usr/bin/env python3 2 import re 3 def find1(ins): 4 """ 5 查找最里面的()并计算,然后再重复查找()不断的计算,直到没有() 6 :param ins:所需要运算的符号 7 :return: 返回一个不带括号的运算 8 """ 9 if not re.search(‘\)+‘,ins) :#判断这个字符串中是否还有括号,没有则退出 10 return ins 11 t=ins.find(‘)‘) 12 # print(t) 13 # print(ins[t]) 14 flag=True 15 num=t 16 while flag: 17 if ins[num] == ‘(‘: 18 flag=False 19 num1=num 20 continue 21 num = num - 1 22 m=ins[num1:t+1] #切片字符串 23 # print(m) 24 ret=eval(m) 25 # print(ret) 26 ins2=ins.replace(m,str(ret))#将计算的结果代替() 27 ret3=find1(ins2)#再重新找下一下() 28 return ret3 29 def check(args): 30 if re.search(r‘[^\+\-*/()0-9\.]‘,args):#判断是否有数字+-*/().以后的非法字符 31 return False 32 if re.search(‘\(\)|\)\(‘,args): #判断() )(则出错 33 return False 34 if re.search(r‘(\([\*\/])|([\+\-*/]\))‘,args):#判断(*或(/ + - * /)则出错 35 return False 36 if re.search(r‘\.[\+\-*/()\.]‘,args): 37 return False 38 t1=re.findall(r‘\(‘,args) 39 t2=re.findall(r‘\)‘,args) 40 if len(t1) != len(t2): 41 return False 42 return True 43 ins1=input("please input str:") 44 check_str=check(ins1) 45 if check_str: 46 ret100=find1(ins1) 47 sum100 = eval(ret100) 48 print(sum100) 49 else: 50 print("输入表达式出错")
以上是关于计算器的主要内容,如果未能解决你的问题,请参考以下文章
Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrackonTriggeronInvalidate副作用的刷新时机`watch` pre)(代码片段