本文实例讲述了python正则表达式实现简易计算器功能。分享给大家供大家参考,具体如下:
需求:使用正则表达式完成一个简易计算器。
功能:能够计算简单的表达式。
如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import re class simplecalc( object ): # 表达式检测 def check( self ,exp): # 合法字符检测 res = re.findall(r "[^\d\+\-\*/\(\)\.]" , exp) print (res) if res: print ( "表达式不正确!!!" ) print ( "输入了非法字符:" , res) return false # 括号检测 res = re.findall(r "(?:[\d\)]\()|(?:\([\*/\)])|(?:[\-\+\*/]\))" ,exp) if res : print ( "表达式不正确!!!" ) print ( "括号使用有误:" , res) return false res = re.findall(r "\(|\)" , exp) if res.count( '(' ) ! = res.count( ')' ): print ( "表达式不正确!!!" ) print ( "括号不匹配:" , res) return false # 运算符检测 res = re.findall(r "[\-\+/]{2,}|\*{3,}" , exp) if res: print ( "表达式不正确!!!" ) print ( "运算符有误:" , res) return false # 小数点位置检测 res = re.findall(r "(^(?<=[0-9])?\.\d+)|(\.\d*?\.)|\.(\d|$)" , exp) if res: print ( "表达式不正确!!!" ) print ( "小数点位置有误:" , res) return false return true def main(): simplecalc = simplecalc() while true: exp = input ( "请输入一个正确的表达式(退出请输入t):\n" ) if exp = = 't' : break if simplecalc.check(exp): print ( '=' , eval (exp)) else : continue if __name__ = = '__main__' : main() |
输出:
请输入一个正确的表达式(退出请输入t):
1*2*((1+2)/(2+3)+1)*5.1-3+2**2
[]
= 17.32
请输入一个正确的表达式(退出请输入t):
12+a
['a']
表达式不正确!!!
输入了非法字符: ['a']
请输入一个正确的表达式(退出请输入t):
ps:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
正则表达式在线测试工具:https://tool.zzvips.com/t/regex/
正则表达式在线生成工具:https://tool.zzvips.com/t/regcode/
希望本文所述对大家python程序设计有所帮助。
原文链接:https://blog.csdn.net/lm_is_dc/article/details/80077405