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

作者:微信1257309054 时间:2021-03-24 16:11:43 

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/lm_is_dc/article/details/80077405

标签:Python,正则表达式,计算器
0
投稿

猜你喜欢

  • ASP去掉字符串头尾连续回车和空格的Function

    2011-04-03 11:13:00
  • 怎样从旧版本SQL Server中重新存储数据

    2009-01-15 13:23:00
  • django foreignkey外键使用的例子 相当于left join

    2021-04-17 15:52:33
  • 基于Python实现开心消消乐小游戏的示例代码

    2022-03-20 13:19:10
  • Python 生成多行重复数据的方法实现

    2022-07-26 18:56:07
  • Python3使用PySynth制作音乐的方法

    2021-03-18 19:41:01
  • 数据库的选择原则是什么?

    2010-07-14 21:05:00
  • 三大原因:按照新HTML标准设计网页好处

    2008-11-12 11:23:00
  • 使用PHP实现生成HTML静态页面

    2023-11-14 11:14:41
  • Python自动化测试中yaml文件读取操作

    2021-11-19 11:55:43
  • Python中的np.vstack()和np.hstack()详解

    2022-05-09 03:06:56
  • [奇招] JS暴虐查找算法

    2008-07-06 21:17:00
  • 简单代码屏蔽超级链接虚线框

    2008-02-03 11:34:00
  • oracle 常用的几个SQL

    2009-12-01 12:36:00
  • JavaScript逆向分析instagram登入过程

    2023-09-08 19:51:52
  • 关于Python中的向量相加和numpy中的向量相加效率对比

    2022-09-30 04:22:44
  • 设计能力决定权力

    2009-06-16 14:48:00
  • Python自动化测试PO模型封装过程详解

    2023-08-23 18:59:49
  • Python实现读取文件夹按数字排序功能

    2023-08-24 02:12:45
  • Python实现计算最小编辑距离

    2021-07-16 19:26:18
  • asp之家 网络编程 m.aspxhome.com