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 mysqldb连接数据库
Mar 16 Python
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
Python计算三维矢量幅度的方法
Jun 15 Python
tensorflow实现简单逻辑回归
Sep 07 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
如何使用Python自动控制windows桌面
Jul 11 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
Keras设置以及获取权重的实现
Jun 19 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
python 实现简单的计算器(gui界面)
Nov 11 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
函授大学生自我鉴定
2014/02/05 职场文书
求职毕业生自荐书
2014/02/08 职场文书
火车来了教学反思
2014/02/11 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android