正则表达式之简易计算器

关注公众号“轻松学编程”了解更多。

需求:使用正则表达式完成一个简易计算器。
功能:能够计算简单的表达式。
如:12((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):

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

python造一个计算器的更多相关文章

  1. 如何用Python写一个计算器软件 附带效果图

    该计算器使用Python  tkinter模块开发 效果如下图 import tkinter #导入tkinter模块 root = tkinter.Tk() root.minsize(280,500 ...

  2. 用python编写一个计算器

    # 1 - 2 * ((60-30 +(-40.0/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2)))# 通过Pyt ...

  3. Python定做一个计算器,小而美哒~

    使用qt designer ,按装anaconda后,在如下路径找到: conda3.05\Library\bin designer.exe文件,双击启动: ​ 创建窗体,命名为XiaoDing,整个 ...

  4. python 实现一个计算器功能

    #s = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )' #第 ...

  5. 用python实现一个计算器

    import re def atom_cal(exp): # 计算乘除法 if '*' in exp: a,b = exp.split('*') return str(float(a) * float ...

  6. 用python做一个搜索引擎(Pylucene)

    什么是搜索引擎? 搜索引擎是“对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分”.如图1是搜索引擎的一般结构,信息搜集模块从网络采集信息到网络信息库之中(一般 ...

  7. 利用Python代码编写计算器小程序

    import tkinter import tkinter.messagebox import math class JSQ: def __init__(self): #创建主界面 self.root ...

  8. 用Python开发实用程序 – 计算器

    一段时间前,自己制作了一个库 “sui-math”.这其实是math的翻版.做完后,python既然可以轻易的完成任何的数学计算,何不用python开发一个小程序专门用以计算呢? 现在我们越来越依赖于 ...

  9. 20204107 孙嘉临《PYTHON程序设计》计算器设计实验二报告

    课程:<python程序设计> 班级:2041 姓名:孙嘉临 学号:20204107 实验教师:王志强 实验日期:2021年4月12日 必修/选修:公选课 ##一.实验内容 设计并完成一个 ...

随机推荐

  1. JS之回调函数(callback)

    1.什么是回调函数? -- 简单点说,一个函数被作为参数传递给另一个函数(在这里我们把另一个函数叫做"otherFunction"),回调函数在otherFunction中被调用. ...

  2. python opencv 读取图片 返回图片某像素点的b,g,r值

    转载:https://blog.csdn.net/weixin_41799483/article/details/80884682 #coding=utf-8   #读取图片 返回图片某像素点的b,g ...

  3. 【题解】[NOI2011]阿狸的打字机

    阿狸的打字机 \(\text{Solution:}\) 首先观察三种操作:一种是插入一个字符,一种是退回上一步(回到父亲节点). 所以,我们可以对操作串进行模拟,并处理出每一个串在树上的位置. 接下来 ...

  4. CSS中居中的完全指南(中英对照翻译)

    翻译自:https://css-tricks.com/centering-css-complete-guide/ Centering things in CSS is the poster child ...

  5. 《穷查理年鉴》朋友 & 爱人 & 相处 (关于他人)

    朋友 017.物以类聚,人以群分. 018.没有什么比拥有谨慎而忠诚的朋友更好的人. 019.人有三个忠实的朋友:老妻.老狗和现钞. 020.旅行者须有猪鼻.鹿腿与驴背. 028.聪明的人才触及他人的 ...

  6. Talk is cheap. Show me the code的由来

    Date: Fri, 25 Aug 2000 11:09:12 -0700 (PDT) From:Linus Torvalds Subject Re: SCO: "thread creati ...

  7. Oracle 和 MySQL 在显示数据库名和表名的区别

    Oracle 显示数据库名和表名 Oracle 查看表名: select table_name from user_tables; select table_name from dba_tables; ...

  8. Azure Media Player Logo隐藏和 视频字幕样式

    <style type="text/css"> /**hide mediaplayer logo*/ .amp-default-skin .amp-content-ti ...

  9. 动画演示Sunday字符串匹配算法——比KMP算法快七倍!极易理解!

    前言 上一篇我用动画的方式向大家详细说明了KMP算法(没看过的同学可以回去看看). 这次我依旧采用动画的方式向大家介绍另一个你用一次就会爱上的字符串匹配算法:Sunday算法,希望能收获你的点赞关注收 ...

  10. python算法常用技巧与内置库

    python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...