python手写计算器

说明这个python计算器只是在运行窗口输入数据没有图形化界面,下面是完整代码和每一步的注释,代码还可以进行简化期待大佬的改进:

import re # 导入re模块 正则表达式的模块
#express = '1 - 2*( (6 0 -3 0 +(-40/5)*(9-2*5/3+ 7/3*99/4*2998 +10 * 568/14 ))-(-4*3)/ (16-3*2))'
express = input('>>>')# 1.去空格
new_express = express.replace(' ','') #去空格
print(1,new_express)# 5. 算式的整理
def  deal_with(exp):#替换返回替换的结果exp = exp.replace('+-','-')exp = exp.replace('--','+')return exp# 4.计算原子表达式
def cal_exp_son(exp_son):if '/' in exp_son:a,b = exp_son.split('/') #用/进行划分,同时赋值给a,breturn str(float(a)/float(b))elif '*' in exp_son:a,b = exp_son.split('*')  #跟上面同理return str(float(a)*float(b))# 3.计算括号内的表达式
def cal_express_no_bracket(exp):while True: #进行循环直到把所有的乘除法表达式全部算完# 去括号exp = exp.strip('()')# 先乘除再加减ret = re.search('\d+\.?\d*[*/]-?\d+\.?\d*',exp) #匹配式子中乘法或者除法表达式if ret:      #如果存在乘法或者除法表达式exp_son = ret.group()  #拿到匹配到的第一个表达式例如 -40/5print(3,exp_son)ret = cal_exp_son(exp_son) #调用该函数进行计算并拿到计算后的结果exp = exp.replace(exp_son,ret) #将计算好的结果替换回传进来的表达式  -40/5 替换成 -8.0exp = deal_with(exp)  #对替换好的表达式进行整理,以免出现bugelse:# 这时说明括号内的表达式没有乘法或者除法表达式了list = re.findall('-?\d+\.?\d*',exp) #findall()返回的是一个列表,这里进行正则匹配,将匹配的数字放入列表中sum  = 0for i in list: #遍历列表进行求和sum += float(i)return str(sum)  #将括号内的值计算好再以字符串的形式返回出去#2.找最内层的括号
while True:ret = re.search('\([^()]+\)',new_express) #匹配最内侧的括号if ret:# 如果匹配到了express_no_bracket = ret.group() #找到最内侧括号的第一个括号print(2, express_no_bracket)ret = cal_express_no_bracket(express_no_bracket) #调用该函数进行计算括号内的值new_express = new_express.replace(express_no_bracket,ret) #对整体的表达式进行替换,就是将整个括号内的值替换到原表达式中new_express = deal_with(new_express) #对替换后的表达式进行整理print(new_express)else:new_express = cal_express_no_bracket(new_express) #当全部的括号都算完时,这时表达式中只有加减算法,直接调用该函数进行计算print(new_express) #输出最终的结果break #整个表达式计算完毕

python手写计算器相关推荐

  1. python手写均值滤波器_python手写均值滤波

    本文实例为大家分享了python手写均值滤波的具体代码,供大家参考,具体内容如下 原理与卷积类似,设置一个n*n的滤波模板,滤波模板内的值累加除以模板的尺寸大小取平均为滤波后的值. 代码如下: imp ...

  2. 用 Python 手写机器学习最简单的 KNN 算法

    作者 | 苏克1900 责编 | 胡巍巍 说实话,相比爬虫,掌握机器学习更实用竞争力也更强些. 目前网上大多这类教程对新手都不友好,要么直接调用 Sklearn 包,要么满篇抽象枯燥的算法公式文字,看 ...

  3. python 手写字符识别

    代码来源 GitHub - mivlab/AI_course 一.对于图像的训练 数据集:https://pan.baidu.com/s/18Fz9Cpj0Lf9BC7As8frZrw 提取码:xhg ...

  4. Python手写实现LDA与QDA算法

    Python手写实现LDA与QDA算法 简略版 LDA QDA 完整版 LDA QDA 对IRIS数据集进行实验 近期实验室在上一门机器学习的讨论班,第一次作业中有一道题要求实现LDA算法与QDA算法 ...

  5. python 手写数字识别 封装GUI,手写板获取鼠标写字轨迹信息

    python 手写数字识别知识不用多说,本文用深度学习Python库Keras实现深度学习入门教程mnist手写数字识别.mnist手写数字识别是机器学习和深度学习领域的"hello wor ...

  6. 【机器学习与算法】python手写算法:Cart树

    [机器学习与算法]python手写算法:Cart树 背景 代码 输出示例 背景 Cart树算法原理即遍历每个变量的每个分裂节点,找到增益(gini或entropy)最大的分裂节点进行二叉分割. 这里只 ...

  7. Python 手写机器学习最简单的 kNN 算法

    https://www.toutiao.com/a6698919092876739079/ Python 手写机器学习最简单的 kNN 算法 苏克1900 Python爬虫与数据挖掘 本文 3000 ...

  8. Python手写线性回归算法

    作者 | 苏南下 来源 | 机器会学习ML(ID:AI_Learning007) 摘要:通俗易懂介绍线性回归算法,并 Python 手写实现. 之前我们介绍了:kNN 算法,主要用于解决分类问题,也可 ...

  9. 用python手写KNN算法+kd树及其BBF优化(原理与实现)(下篇)

    用python手写KNN算法+kd树及其BBF优化(原理与实现)(下篇) 接上一篇用python手写KNN算法+kd树及其BBF优化(原理与实现)(上篇) 我们使用training2和test2两个数 ...

  10. python手写代码面试_常见Python面试题—手写代码系列

    原标题:常见Python面试题-手写代码系列 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse( ...

最新文章

  1. 上传数据,直接分析,这才是真正的生物云
  2. java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍
  3. nginx配置支持http2
  4. .NET Core验证ASP.NET密码
  5. 招聘 | 大疆算法类未来大咖招聘
  6. 专访 Unity 高管:深耕游戏、VR/AR,致力为开发者提供极致体验
  7. AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown
  8. mssql数据库基本语句总结(2)
  9. 全宁对医药行业销售代表的介绍
  10. FFmpeg的H.264解码器源代码简单分析
  11. Tomcat下work文件夹的作用
  12. ios 启动图一键生成工具_APP启动图生成
  13. RTEC机器人_广东省中小学电脑机器人活动获奖结果公布
  14. Python实现数列求和
  15. Laravel 使用Dingo API
  16. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型
  17. 第八章 磁盘存储器的管理
  18. debian linux 7 安装,Debian 7安装设置教程
  19. Isolation Forest算法原理详解
  20. HW算法题:判断字符串子序列

热门文章

  1. 雪球python爬虫炒股_关于雪的作文
  2. c语言是高级编程语言吗,C语言是高级编程语言吗?
  3. 2019上半年系统集成项目管理工程师上午真题及答案解析
  4. springboot2.4+nettyWebServerApplicationContext@15f51c50 has been closed already问题解决
  5. PHP调用shell命令
  6. C-Free5注册码,秘钥,解决办法
  7. Eclipse详细安装教程
  8. c语言起点到目的地方法数,最短路径动态规划问题及C语言实现探讨
  9. 什么是软件测试,测试基础有哪些?
  10. 【Flutter 问题系列第 25 篇】Flutter 使用自定义字体