首页 > 其他 > 详细

计算器

时间:2017-10-05 14:35:20      阅读:230      评论:0      收藏:0      [点我收藏+]
 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("输入表达式出错")

 

计算器

原文:http://www.cnblogs.com/wang43125471/p/7629129.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!