python

超轻量级php框架startmvc

Python正则表达式实现简易计算器功能示例

更新时间:2020-07-02 07:48:01 作者:startmvc
本文实例讲述了Python正则表达式实现简易计算器功能。分享给大家供大家参考,具体如下:

本文实例讲述了Python正则表达式实现简易计算器功能。分享给大家供大家参考,具体如下:

需求:使用正则表达式完成一个简易计算器。

功能:能够计算简单的表达式。

如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2


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款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具: http://tools.jb51.net/regex/javascript

正则表达式在线生成工具: http://tools.jb51.net/regex/create_reg

Python 正则表达式 计算器