不完善: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模块实现数学公式计算相关推荐

  1. Python——利用sympy模块进行数学计算

    参考链接: SymPy简易教程 SymPy库常用函数 Python sympy 模块常用功能(一) Python科学计算库SymPy初探 简介 SymPy是一个符号计算的Python库.它的目标是成为 ...

  2. python之路——模块和包

    一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编 ...

  3. Python multiprocess 多进程模块

    转发:http://www.langzi.fun/Python multiprocess 多进程模块.html 需要注意的是,如果使用多线程,用法一定要加上if __name__=='__main__ ...

  4. python时间处理模块 datetime time模块 deltetime模块

    1 首先介绍time模块,因为简单 python 自带模块 本人使用time模块,只使用两个函数 time函数和sleep函数 import time a.     time.time()   函数 ...

  5. python pil_使用Python的PIL模块来进行图片对比

    在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, 开个玩笑,当然是通过机器识别的,海量的图片 ...

  6. Python中time模块详解

    转载自:http://qinxuye.me/article/details-about-time-module-in-python/ 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间 ...

  7. python中Scipy模块求取积分

    python中Scipy模块求取积分的方法: SciPy下实现求函数的积分的函数的基本使用,积分,高等数学里有大量的讲述,基本意思就是求曲线下面积之和. 其中rn可认为是偏差,一般可以忽略不计,wi可 ...

  8. 【Python】Python学习----第一模块笔记

    1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...

  9. python安装numpy模块-python的numpy模块安装不成功简单解决方法总结

    为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程.方法发现总结得不是很全,这里总结一下,防止大家再出现这个问题没有解决方法. Python的魅力之一 ...

最新文章

  1. ubuntu中使用apt命令安装ipython失败解决方案
  2. 句法分析语料:哈尔滨工业大学SemEval、清华大学树库
  3. android 透明度变化,安卓获取屏幕的宽高并设置平移动画和透明度变化
  4. 《系统集成项目管理工程师》必背100个知识点-48质量控制的老七工具和新七工具...
  5. Android开源项目--分类汇总
  6. 数学--数论--HDU6919 Senior PanⅡ【2017多校第九场】
  7. 火狐、IE、Chrome已进入三国时代
  8. 3G时代 一起走近无线运维的3A标准——柳州市劳动和社会保障局
  9. 2018软工实践第二次作业
  10. 【codevs1576】最长严格上升子序列
  11. 合并多个js,css文件的方法 - 在服务端合并和压缩JavaScript和CSS文件
  12. 支持p2p的m3u8.php,P2P版M3U8解析源码2.1正式版
  13. 利用泰勒展开求高斯分布表
  14. wordpress 百度主动推送 PHP,WordPress 百度自动推送插件
  15. 2022-2028全球沉浸式投影行业调研及趋势分析报告
  16. 机器自动翻译古文拼音 - 十大宋词 - 声声慢 寻寻觅觅 李清照
  17. DDSM database、INbreast database、MIAS等乳腺MG数据获取方式
  18. ap接口 php_php中api接口什么用
  19. linux 筛选文件,「Linux基础知识」grep文件内容筛选命令的使用
  20. UEStudio 9 注册码

热门文章

  1. apache评分条件_APACHE Ⅲ 评分标准.doc
  2. 多CPU 多核CPU | 多进程 多线程 | 并行 并发
  3. 鼠标滑轮只能控制声音?
  4. 使用word完成海报制作说明书
  5. 基于ROS设计一款机械臂控制系统 [转发]
  6. 执行transact mysql_错误 执行Transact-SQL语句批处理时发生了异常。无法设置主体'sa'的凭据...
  7. UART(一)裸机编程
  8. 北京各大医院专长(转)
  9. 【腾讯敏捷转型NO.1】敏捷是什么鬼?
  10. 四、vue 项目使用高德地图画面(多边形)