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检测lvs real server状态
Jan 22 Python
Python的ORM框架SQLObject入门实例
Apr 28 Python
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
python编程实现希尔排序
Apr 13 Python
为什么Python中没有&quot;a++&quot;这种写法
Nov 27 Python
python+mysql实现学生信息查询系统
Feb 21 Python
Python文件路径名的操作方法
Oct 30 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
Python实战之OpenCV实现猫脸检测
Jun 26 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
星际争霸任务指南——神族
2020/03/04 星际争霸
PHP静态类
2006/11/25 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
iview的table组件自带的过滤器实现
2019/07/12 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
python不带重复的全排列代码
2013/08/13 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
技能比赛获奖感言
2014/02/14 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
员工手册董事长致辞
2015/07/29 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书