Python正则表达式实现简易计算器功能示例
作者:微信1257309054 时间:2021-03-24 16:11:43
本文实例讲述了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):
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/lm_is_dc/article/details/80077405
标签:Python,正则表达式,计算器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
ASP去掉字符串头尾连续回车和空格的Function
2011-04-03 11:13:00
怎样从旧版本SQL Server中重新存储数据
2009-01-15 13:23:00
django foreignkey外键使用的例子 相当于left join
2021-04-17 15:52:33
基于Python实现开心消消乐小游戏的示例代码
2022-03-20 13:19:10
![](https://img.aspxhome.com/file/2023/8/86428_0s.jpg)
Python 生成多行重复数据的方法实现
2022-07-26 18:56:07
Python3使用PySynth制作音乐的方法
2021-03-18 19:41:01
![](https://img.aspxhome.com/file/2023/3/68283_0s.png)
数据库的选择原则是什么?
2010-07-14 21:05:00
三大原因:按照新HTML标准设计网页好处
2008-11-12 11:23:00
使用PHP实现生成HTML静态页面
2023-11-14 11:14:41
Python自动化测试中yaml文件读取操作
2021-11-19 11:55:43
Python中的np.vstack()和np.hstack()详解
2022-05-09 03:06:56
[奇招] JS暴虐查找算法
2008-07-06 21:17:00
简单代码屏蔽超级链接虚线框
2008-02-03 11:34:00
oracle 常用的几个SQL
2009-12-01 12:36:00
JavaScript逆向分析instagram登入过程
2023-09-08 19:51:52
![](https://img.aspxhome.com/file/2023/4/56114_0s.png)
关于Python中的向量相加和numpy中的向量相加效率对比
2022-09-30 04:22:44
设计能力决定权力
2009-06-16 14:48:00
![](https://img.aspxhome.com/file/UploadPic/20096/16/d-68s.jpg)
Python自动化测试PO模型封装过程详解
2023-08-23 18:59:49
![](https://img.aspxhome.com/file/2023/0/84040_0s.png)
Python实现读取文件夹按数字排序功能
2023-08-24 02:12:45
Python实现计算最小编辑距离
2021-07-16 19:26:18
![](https://img.aspxhome.com/file/2023/0/80630_0s.png)