计算器

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("输入表达式出错")

 

以上是关于计算器的主要内容,如果未能解决你的问题,请参考以下文章

从JVM的角度看JAVA代码--代码优化

Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrackonTriggeronInvalidate副作用的刷新时机`watch` pre)(代码片段

golang代码片段(摘抄)

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

如何在 python 中并行化以下代码片段?