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实现电子词典
Apr 23 Python
DJANGO-ALLAUTH社交用户系统的安装配置
Nov 18 Python
python验证码识别的实例详解
Sep 09 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
详解Python进程间通信之命名管道
Aug 28 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
pytorch中的weight-initilzation用法
Jun 24 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 Python
python scrapy简单模拟登录的代码分析
Jul 21 Python
python双向链表实例详解
May 25 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集成百度Ueditor 1.4.3
2014/11/23 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
使用PHP开发留言板功能
2019/11/19 PHP
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
python实现学生通讯录管理系统
2021/02/25 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
实习生矿工检讨书
2014/10/13 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2014年仓库工作总结
2014/11/20 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
Python3.10的一些新特性原理分析
2021/09/15 Python