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


Posted in Python onMay 07, 2019

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

Python 相关文章推荐
Python实现约瑟夫环问题的方法
May 03 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python抓取框架 Scrapy的架构
Aug 12 Python
详解python进行mp3格式判断
Dec 23 Python
python万年历实现代码 含运行结果
May 20 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Python构建图像分类识别器的方法
Jan 12 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
PyQt5响应回车事件的方法
Jun 25 Python
python爬虫构建代理ip池抓取数据库的示例代码
Sep 22 Python
深入浅析Python 中 is 语法带来的误解
May 07 #Python
利用python如何在前程无忧高效投递简历
May 07 #Python
Python可迭代对象操作示例
May 07 #Python
python实现支付宝转账接口
May 07 #Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 #Python
python验证身份证信息实例代码
May 06 #Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 #Python
You might like
php框架Phpbean说明
2008/01/10 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
JS 实现微信扫一扫功能
2018/09/14 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
Python中的asyncio代码详解
2019/06/10 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Python字符串格式化输出代码实例
2019/11/22 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
新护士岗前培训制度
2014/02/02 职场文书
物理力学求职信
2014/02/18 职场文书
奥运会口号
2014/06/13 职场文书
群众路线领导对照材料
2014/08/23 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
教师师德表现自我评价
2015/03/05 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang