本文实例讲述了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