python手写计算器
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手写计算器相关推荐
- python手写均值滤波器_python手写均值滤波
本文实例为大家分享了python手写均值滤波的具体代码,供大家参考,具体内容如下 原理与卷积类似,设置一个n*n的滤波模板,滤波模板内的值累加除以模板的尺寸大小取平均为滤波后的值. 代码如下: imp ...
- 用 Python 手写机器学习最简单的 KNN 算法
作者 | 苏克1900 责编 | 胡巍巍 说实话,相比爬虫,掌握机器学习更实用竞争力也更强些. 目前网上大多这类教程对新手都不友好,要么直接调用 Sklearn 包,要么满篇抽象枯燥的算法公式文字,看 ...
- python 手写字符识别
代码来源 GitHub - mivlab/AI_course 一.对于图像的训练 数据集:https://pan.baidu.com/s/18Fz9Cpj0Lf9BC7As8frZrw 提取码:xhg ...
- Python手写实现LDA与QDA算法
Python手写实现LDA与QDA算法 简略版 LDA QDA 完整版 LDA QDA 对IRIS数据集进行实验 近期实验室在上一门机器学习的讨论班,第一次作业中有一道题要求实现LDA算法与QDA算法 ...
- python 手写数字识别 封装GUI,手写板获取鼠标写字轨迹信息
python 手写数字识别知识不用多说,本文用深度学习Python库Keras实现深度学习入门教程mnist手写数字识别.mnist手写数字识别是机器学习和深度学习领域的"hello wor ...
- 【机器学习与算法】python手写算法:Cart树
[机器学习与算法]python手写算法:Cart树 背景 代码 输出示例 背景 Cart树算法原理即遍历每个变量的每个分裂节点,找到增益(gini或entropy)最大的分裂节点进行二叉分割. 这里只 ...
- Python 手写机器学习最简单的 kNN 算法
https://www.toutiao.com/a6698919092876739079/ Python 手写机器学习最简单的 kNN 算法 苏克1900 Python爬虫与数据挖掘 本文 3000 ...
- Python手写线性回归算法
作者 | 苏南下 来源 | 机器会学习ML(ID:AI_Learning007) 摘要:通俗易懂介绍线性回归算法,并 Python 手写实现. 之前我们介绍了:kNN 算法,主要用于解决分类问题,也可 ...
- 用python手写KNN算法+kd树及其BBF优化(原理与实现)(下篇)
用python手写KNN算法+kd树及其BBF优化(原理与实现)(下篇) 接上一篇用python手写KNN算法+kd树及其BBF优化(原理与实现)(上篇) 我们使用training2和test2两个数 ...
- python手写代码面试_常见Python面试题—手写代码系列
原标题:常见Python面试题-手写代码系列 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse( ...
最新文章
- 上传数据,直接分析,这才是真正的生物云
- java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍
- nginx配置支持http2
- .NET Core验证ASP.NET密码
- 招聘 | 大疆算法类未来大咖招聘
- 专访 Unity 高管:深耕游戏、VR/AR,致力为开发者提供极致体验
- AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown
- mssql数据库基本语句总结(2)
- 全宁对医药行业销售代表的介绍
- FFmpeg的H.264解码器源代码简单分析
- Tomcat下work文件夹的作用
- ios 启动图一键生成工具_APP启动图生成
- RTEC机器人_广东省中小学电脑机器人活动获奖结果公布
- Python实现数列求和
- Laravel 使用Dingo API
- HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型
- 第八章 磁盘存储器的管理
- debian linux 7 安装,Debian 7安装设置教程
- Isolation Forest算法原理详解
- HW算法题:判断字符串子序列
热门文章
- 雪球python爬虫炒股_关于雪的作文
- c语言是高级编程语言吗,C语言是高级编程语言吗?
- 2019上半年系统集成项目管理工程师上午真题及答案解析
- springboot2.4+nettyWebServerApplicationContext@15f51c50 has been closed already问题解决
- PHP调用shell命令
- C-Free5注册码,秘钥,解决办法
- Eclipse详细安装教程
- c语言起点到目的地方法数,最短路径动态规划问题及C语言实现探讨
- 什么是软件测试,测试基础有哪些?
- 【Flutter 问题系列第 25 篇】Flutter 使用自定义字体