python用re模块实现数学公式计算
不完善:1.如果公式里没()
2.算到中间部,可能有*-, +- ,-- ,这样的情况
import re'''计算字符串表达式''' bracket = re.compile('\([^()]+\)') # 查找最内层括号 div = re.compile('(\d+\.?\d*/-\d+\.?\d*)|(\d+\.?\d*/\d+\.?\d*)') # 查找除法运算 mul = re.compile('(\d+\.?\d*\*-\d+\.?\d*)|(\d+\.?\d*\*\d+\.?\d*)') # 查找乘法运算 add = re.compile('(-\d+\.?\d*\+\d+\.?\d*)|(\d+\.?\d*\+\d+\.?\d*)') # 查找加法运算 sub = re.compile('(-\d+\.?\d*-\d+\.?\d*)|(\d+\.?\d*-\d+\.?\d*)') # 查找减法运算 c_f=re.compile('\(?\d+\)?') strip=re.compile('[^()]')def Div(s):exp = re.split('/', div.search(s).group())return s.replace(div.search(s).group(), str(float(exp[0]) / float(exp[1])))def Mul(s):exp = re.split('\*', mul.search(s).group())return s.replace(mul.search(s).group(), str(float(exp[0]) * float(exp[1])))def Add(s):exp = re.split('\+', add.search(s).group())return s.replace(add.search(s).group(), str(float(exp[0]) + float(exp[1])))def Sub(s):exp = sub.search(s).group()if exp.startswith('-'):exp = exp.replace('-', '+')exp = exp.replace('+', '', 1)res = Add(exp)return s.replace(sub.search(s).group(), '-' + res)else:exp = re.split('-', sub.search(s).group())return s.replace(sub.search(s).group(), str(float(exp[0]) - float(exp[1])))def calc():while True:s = input('请输入等式').replace(' ','')if s=='quit':breakelse:while bracket.search(s):s_search=bracket.search(s).group()if div.search(s_search):s=s.replace(s_search,Div(s_search))elif mul.search(s_search):s=s.replace(s_search,Mul(s_search))elif sub.search(s_search):s = s.replace(s_search, Sub(s_search))elif add.search(s_search):s=s.replace(s_search,Add(s_search))elif c_f.search(s_search):s=s.replace(s_search,strip.search(s_search).group())print(s)calc()
转载于:https://www.cnblogs.com/wuweixiong/p/10572277.html
python用re模块实现数学公式计算相关推荐
- Python——利用sympy模块进行数学计算
参考链接: SymPy简易教程 SymPy库常用函数 Python sympy 模块常用功能(一) Python科学计算库SymPy初探 简介 SymPy是一个符号计算的Python库.它的目标是成为 ...
- python之路——模块和包
一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编 ...
- Python multiprocess 多进程模块
转发:http://www.langzi.fun/Python multiprocess 多进程模块.html 需要注意的是,如果使用多线程,用法一定要加上if __name__=='__main__ ...
- python时间处理模块 datetime time模块 deltetime模块
1 首先介绍time模块,因为简单 python 自带模块 本人使用time模块,只使用两个函数 time函数和sleep函数 import time a. time.time() 函数 ...
- python pil_使用Python的PIL模块来进行图片对比
在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, 开个玩笑,当然是通过机器识别的,海量的图片 ...
- Python中time模块详解
转载自:http://qinxuye.me/article/details-about-time-module-in-python/ 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间 ...
- python中Scipy模块求取积分
python中Scipy模块求取积分的方法: SciPy下实现求函数的积分的函数的基本使用,积分,高等数学里有大量的讲述,基本意思就是求曲线下面积之和. 其中rn可认为是偏差,一般可以忽略不计,wi可 ...
- 【Python】Python学习----第一模块笔记
1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...
- python安装numpy模块-python的numpy模块安装不成功简单解决方法总结
为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程.方法发现总结得不是很全,这里总结一下,防止大家再出现这个问题没有解决方法. Python的魅力之一 ...
最新文章
- ubuntu中使用apt命令安装ipython失败解决方案
- 句法分析语料:哈尔滨工业大学SemEval、清华大学树库
- android 透明度变化,安卓获取屏幕的宽高并设置平移动画和透明度变化
- 《系统集成项目管理工程师》必背100个知识点-48质量控制的老七工具和新七工具...
- Android开源项目--分类汇总
- 数学--数论--HDU6919 Senior PanⅡ【2017多校第九场】
- 火狐、IE、Chrome已进入三国时代
- 3G时代 一起走近无线运维的3A标准——柳州市劳动和社会保障局
- 2018软工实践第二次作业
- 【codevs1576】最长严格上升子序列
- 合并多个js,css文件的方法 - 在服务端合并和压缩JavaScript和CSS文件
- 支持p2p的m3u8.php,P2P版M3U8解析源码2.1正式版
- 利用泰勒展开求高斯分布表
- wordpress 百度主动推送 PHP,WordPress 百度自动推送插件
- 2022-2028全球沉浸式投影行业调研及趋势分析报告
- 机器自动翻译古文拼音 - 十大宋词 - 声声慢 寻寻觅觅 李清照
- DDSM database、INbreast database、MIAS等乳腺MG数据获取方式
- ap接口 php_php中api接口什么用
- linux 筛选文件,「Linux基础知识」grep文件内容筛选命令的使用
- UEStudio 9 注册码
热门文章
- apache评分条件_APACHE Ⅲ 评分标准.doc
- 多CPU 多核CPU | 多进程 多线程 | 并行 并发
- 鼠标滑轮只能控制声音?
- 使用word完成海报制作说明书
- 基于ROS设计一款机械臂控制系统 [转发]
- 执行transact mysql_错误 执行Transact-SQL语句批处理时发生了异常。无法设置主体'sa'的凭据...
- UART(一)裸机编程
- 北京各大医院专长(转)
- 【腾讯敏捷转型NO.1】敏捷是什么鬼?
- 四、vue 项目使用高德地图画面(多边形)