经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 正则表达式 » 查看文章
Python正则表达式实现简易计算器功能示例
来源:jb51  时间:2019/5/7 12:14:47  对本文有异议

本文实例讲述了Python正则表达式实现简易计算器功能。分享给大家供大家参考,具体如下:

需求:使用正则表达式完成一个简易计算器。

功能:能够计算简单的表达式。

如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2

  1. import re
  2. class SimpleCalc(object):
  3. # 表达式检测
  4. def check(self,exp):
  5. # 合法字符检测
  6. res = re.findall(r"[^\d\+\-\*/\(\)\.]", exp)
  7. print(res)
  8. if res:
  9. print("表达式不正确!!!")
  10. print("输入了非法字符:", res)
  11. return False
  12. # 括号检测
  13. res = re.findall(r"(?:[\d\)]\()|(?:\([\*/\)])|(?:[\-\+\*/]\))",exp)
  14. if res :
  15. print("表达式不正确!!!")
  16. print("括号使用有误:", res)
  17. return False
  18. res = re.findall(r"\(|\)", exp)
  19. if res.count('(') != res.count(')'):
  20. print("表达式不正确!!!")
  21. print("括号不匹配:", res)
  22. return False
  23. # 运算符检测
  24. res = re.findall(r"[\-\+/]{2,}|\*{3,}", exp)
  25. if res:
  26. print("表达式不正确!!!")
  27. print("运算符有误:", res)
  28. return False
  29. # 小数点位置检测
  30. res = re.findall(r"(^(?<=[0-9])?\.\d+)|(\.\d*?\.)|\.(\D|$)", exp)
  31. if res:
  32. print("表达式不正确!!!")
  33. print("小数点位置有误:", res)
  34. return False
  35. return True
  36. def main():
  37. simpleCalc = SimpleCalc()
  38. while True:
  39. exp = input("请输入一个正确的表达式(退出请输入t):\n")
  40. if exp == 't':
  41. break
  42. if simpleCalc.check(exp):
  43. print('=',eval(exp))
  44. else:
  45. continue
  46. if __name__ == '__main__':
  47. main()
  48.  

输出:

请输入一个正确的表达式(退出请输入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相关内容可查看jb51专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号