python数学公式代码_PythonStudy_‘数学公式计算器’代码
importre#计算器基本功能函数定义#幂运算:**
defpower(f):'''幂运算,power
:param f: 需要运算的公式,如:f = '2**3'
:return: 幂运算的结果f,str'''
#print(f,type(f)) #测试用
ret = re.split('\*\*',f)if len(ret) == 2:
f= str(float(ret[0])**float(ret[1]))returnf#乘除运算:*|
defcheng_chu(f):'''乘法和除法是同级运算,本函数进行乘除法运算并返回结果。
:param f: 待运算的公式,如2*3、3/4。
:return: 运算结果f,str'''ret= re.split(r'([*/])', f)if len(ret) == 3:if ret[1] == '*':
f= str(float(ret[0]) * float(ret[2]))else:
f= str(float(ret[0]) / float(ret[2]))returnf#加减运算:+-
defjia_jian(f):'''加法和减法是同级运算,本函数进行加减法运算并返回结果。
:param f: 待运算的公式,如2+3、3-4。
:return: 运算结果f,str'''ret= re.split('([+-])', f)if len(ret) == 3:if ret[1] == '+':
f= str(float(ret[0]) + float(ret[2]))else:
f= str(float(ret[0]) - float(ret[2]))returnf#不含()的公式运算#使用自定义函数power()、cheng_chu()、jia_jian()
defno_bracket_formula(fa):'''完成不带括号的公式运算,如:'1+3-3*2'。
:param fa: 待运算的公式,str
:return: 返回运算结果,str'''
#print(fa) # 测试用
#首先,进行幂运算
whileTrue:
ret= re.split('(\d+\.?\d*\*\*\d+\.?\d*)',fa,1)#print(ret) # 测试用
if len(ret) == 3:
ret[1] = power(ret[1])
fa= ret[0] + ret[1] + ret[2]#print(fa) # 测试用
continue
else:break
#print(fa,type(fa)) # 测试用
#其次,进行乘法和除法运算
whileTrue:
ret= re.split('(\d+\.?\d*[*/]\d+\.?\d*)',fa,1)#print(ret) # 测试用
if len(ret) == 3:
ret[1] = cheng_chu(ret[1])
fa= ret[0] + ret[1] + ret[2]#print(fa) # 测试用
continue
else:break
#print(fa, type(fa)) # 测试用
#最后,进行加减运算
whileTrue:if fa == re.match('[-+]?\d+\.?\d*', fa): #只剩下一个数值时,结束
break
else: #不止一个数值时,继续运算
ret = re.split('(\d+\.?\d*)',fa,2) #找到需要运算的两个数值,切割
#print('ret=',ret) # 测试用
if len(ret) == 5:if (ret[0] == ret[2]) or (ret[0] == '' and ret[2] == '+') :
fa= str(ret[0] + jia_jian(ret[1] + '+' + ret[3]) + ret[4])else:
fa= str(ret[0] + jia_jian(ret[1] + '-' + ret[3]) + ret[4])#print(fa) # 测试用
continue
else:break
#print(fa, type(fa)) # 测试用
#返回运算结果
returnfadefmain(fa):'''完成数学公式的运算。
思路:使用re.split()先计算()内部运算式;在求总体结果。
:param fa: 需要进行运算的公式
:return: 公式计算结果'''
whileTrue:#找出进行运算的()内公式
ret = re.split('\(([^()]+)\)',fa,1)#运算()公式,结果替换原公式中()部分
if len(ret) == 3:
ret[1] = str(no_bracket_formula(ret[1]))
fa= ret[0] + ret[1] + ret[2]continue
else:break
returnno_bracket_formula(fa)
#函数调用,进行公式运算,并返回结果
fa = '10**3+(20-(3*5)**(2.4/4.2))/5.5+5-(4*2-3)'ret=main(fa)print(fa,'=',ret)print(eval(fa)) #测试用
python数学公式代码_PythonStudy_‘数学公式计算器’代码相关推荐
- android复杂计算器代码,android简单计算器代码
<android简单计算器代码>由会员分享,可在线阅读,更多相关<android简单计算器代码(9页珍藏版)>请在人人文库网上搜索. 1.package class Calcu ...
- python简单代码加法-Python tkinter实现简单加法计算器代码实例
tkinter 是 Python 的标准 GUI 库.Python 使用 tkinter 可以快速的创建 GUI 应用程序.由于 tkinter 是内置到 python 的安装包中.只要安装好 Pyt ...
- 一元多项式计算器Java_一元多项式计算器代码.doc
一元多项式计算器代码.doc 一元多项式计算器代码INCLUDEINCLUDEINCLUDETYPEDEFSTRUCTPOLYNODE{FLOATCOEF//系数INTEXP//指数STRUCTPOL ...
- python数学公式编辑工具_1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器...
原标题:1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器 来源:量子位 关注前沿科技 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧箫 发自 凹非寺 ...
- python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例
Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...
- 【Python知识点梳理】10.Python的垃圾回收机制、代码规范及命令行参数
Python的垃圾回收机制.代码规范及命令行参数 文章目录 1.Python的垃圾回收机制 2.Python的引用计数机制 3.Python中的循环数据结构及引用计数 4.Python中的GC模块 5 ...
- python处理速度_如何让Python处理速度翻倍?内含代码
原标题:如何让Python处理速度翻倍?内含代码 作为在日常开发生产中非常实用的语言,有必要掌握一些python用法,比如爬虫.网络请求等场景,很是实用.但python是单线程的,如何提高python ...
- python登录代码思路_用python登录Dr.com思路以及代码分享
用python登录Dr.com思路以及代码分享 发布于 2014-08-28 22:31:52 | 192 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...
- 实战:使用 Python 用不到 10 行代码计算汽车数量
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在这篇文章中,将教你如何使用 Python 用 10 行代码构建自 ...
最新文章
- C语言中前面有四个空格,在C语言编程中什么叫前导空格,什么叫尾随空 – 手机爱问...
- 百度地图滚轮缩放,所在点偏移问题
- 时间序列研(part10)--误差修正模型
- thinkphp 模板 php函数调用,thinkphp模版调用函数方法
- 日志分析系统搭建分析与比较
- 如何能理解 Spring 框架的思想?
- svn不知道这样的主机 怎么解决_玫瑰人生护肤品怎么样?你不知道的重要的事居然是这样的.........
- [转载] Python3.X之——卷积计算
- Educoder Basemap和Seaborn 第2关:Seaborn图形介绍
- 体验式培训之“盲人与哑巴”
- 微信转发别人语音的方法
- 费率转换成利率的计算器_存款利率计算器
- 使用Python2.7和火狐浏览器下载QQ空间好友相册
- C语言malloc函数详解(通俗易懂)
- python中for循环的用法a+aa+aaa-Python练习题 013:求解a+aa+aaa……
- 【FinE】债券久期和凸性
- 面试经历(纯属个人经历,仅供观看参考)
- [PTA] 7-6 厘米换算英尺英寸
- 文献分析工具Connected Papers
- linux Netfilter在网络层的实现详细分析(iptables)