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科学计算包numpy用法实例详解
Feb 08 Python
python实现数据导出到excel的示例--普通格式
May 03 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
python中强大的format函数实例详解
Dec 05 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
django云端留言板实例详解
Jul 22 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
对python中arange()和linspace()的区别说明
May 03 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
python实现的人脸识别打卡系统
May 08 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+xslt在windows平台上
2006/10/09 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
javascript中的对象创建 实例附注释
2011/02/08 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
详解Python import方法引入模块的实例
2017/08/02 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
python实现ip代理池功能示例
2019/07/05 Python
Python简易版停车管理系统
2019/08/12 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
写给学生的新学期寄语
2014/01/18 职场文书
同事吵架检讨书
2014/02/05 职场文书
室内拓展活动方案
2014/02/13 职场文书
2014年母亲节寄语
2014/05/07 职场文书
转让协议书
2015/01/27 职场文书
高三教师工作总结2015
2015/07/21 职场文书
工作简报范文
2015/07/21 职场文书
小学主题班会教案
2015/08/17 职场文书
高二语文教学反思
2016/02/16 职场文书
Python基础之pandas数据合并
2021/04/27 Python
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android