import re

from functools import reduce

def mul_div(exp): # 计算两个数的乘法或者除法

if '*' in exp:

a, b = exp.split('*')

return float(a)*float(b)

if '/' in exp:

a, b = exp.split('/')

return float(a) / float(b)

def exp_fmt(exp):

while re.search('[+-]{2,}',exp):

exp = exp.replace('--','+')

exp = exp.replace('+-','-')

exp = exp.replace('-+','-')

exp = exp.replace('++','+')

return exp

def remove_addsub(exp):

ret = re.findall('[-+]?\d+(?:\.\d+)?',exp)

res = reduce(lambda a,b:float(a)+float(b),ret)

return res

def remove_muldiv(exp): # 计算表达式中的所有的乘除法

while True:

ret = re.search('\d+(\.\d+)?[*/]-?\d+(\.\d+)?',exp)

if ret:

son_exp = ret.group() # 3*4 12*5

res = mul_div(son_exp)

exp = exp.replace(son_exp,str(res))

else:return exp

def cal(exp):

res = remove_muldiv(exp) # 计算乘除

res = exp_fmt(res) # 符号整理

ret = remove_addsub(res) # 计算加减

return ret

def main(exp):

exp = exp.replace(' ', '')

while True:

ret = re.search('\([^()]+\)', exp)

if ret:

res = cal(ret.group())

exp = exp.replace(ret.group(), str(res))

else: return cal(exp)

exp = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'

ret = main(exp)

print(ret)

python简易计算器教程_python 实现简易计算器相关推荐

  1. python 微信机器人教程_Python创建微信机器人(附赠Python视频教程)

    微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地.今天我们要讲的便是如何用Python来做一个微信聊天机器人,突然想起鲁迅先生曾经说过的一句话: 因为是微信机器人 ...

  2. python独立网站教程_python做网站教程_如何免费做网站的教程

    python学习指南教程 180x270 - 7KB - JPEG 图灵程序设计丛书:Python基础教程 260x317 - 12KB - JPEG 跳一跳python使用教程 微信跳一跳pytho ...

  3. python自学完整教程_python自学完整教程

    [教程介绍] 想学习一门编程语言,是不是必须考上大学的计臬机专业,才能真正学会呢? 其实不是,在我们身边,很多初中生,甚至国外不少小学生都能把编程学好,通过自学,很多人都能成为编程高手. python ...

  4. python入门测试教程_Python测试入门

    python入门测试教程 This tutorial is for anyone who has written a fantastic application in Python but hasn' ...

  5. python开发音乐播放器教程_python开发简易版在线音乐播放器示例代码

    在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数 ...

  6. python新闻爬虫教程_python简易爬虫教程--(一)批量获取搜狐新闻

    我们先从简单的抓取文本信息开始,来写我们的第一个爬虫程序,获取搜狐新闻的内容. 我们首先来介绍一下我们需要用到的库. 爬虫程序的步骤,一般可以分为三步: 1.获取网页源码(html源码): 2.从代码 ...

  7. 用python动态时钟代码_python实现简易动态时钟

    本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...

  8. python动态时钟代码_python实现简易动态时钟

    本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...

  9. python实现tcp通信_Python实现简易TCP通信程序

    TCP简介 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP旨在适应支持多网络应用的分层协议层次结构. ...

最新文章

  1. Blender写实建筑场景制作学习教程 Exterior Visualization in Blender 2.9
  2. docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别
  3. oracle云产品是什么意思,Oracle云端产品线也要AI化,ERP云等4大主力云产品先升级...
  4. 算法:删除链表中重复的元素||
  5. html 如何判断文本溢出,判断文本是否溢出
  6. wordpress插件翻译不生效_新的恶意软件利用wordpress插件漏洞攻击数百万网站
  7. clion安装glfw_MacOS上使用Clion配置Vulkan开发环境
  8. 南阳师范学院ACM集训队博客使用方法
  9. javaweb实现分页查询(一)
  10. 关于Acegi的详细信息(配置)
  11. linux网络配置出现E325,Linux CentOS E325错误,如何解决?VI如何使用?
  12. 戴尔硬盘保护增强套件_戴尔4路机架式服务器R940XA原创图集,一部B级车的价值...
  13. 微运行库2015_vc2015运行库下载-Visual C++ 2015(vc2015)下载V14.0.24123 官方版【32位|64位|】-西西软件下载...
  14. 万特电能表接线仿真系统 软件_电工学习PLC和接线入门 之 无中生有(软件仿真)...
  15. 【阅读笔记】(语义分割最全总结,综述)《A Review on Deep Learning Techniques Applied to Semantic Segmentation》
  16. pip升级scapy报错It is a distutils installed project and thus we cannot accurately determine which files
  17. python中inf_认识python中的inf和nan
  18. Win10创建新用户账户
  19. 2013年第四届c b组省赛蓝桥杯
  20. 某医药公司HP-EVA4400数据恢复报告

热门文章

  1. 物理专业书库模板(1):物理学书单(适合物理专业本科生、研究生、科研工作者、物理爱好者...)
  2. autojs做小游戏-连连看
  3. 【数据库】02 SQL语句
  4. 后端ut测试(精选)
  5. 互联网跨界造芯的“菊与刀”
  6. 从MapGIS K9到MapGIS 10到MapGIS 10.3 Server
  7. C# Html转PDF 用itextsharp把Html转PDF 完整版
  8. 基于WEB的水果电商平台设计
  9. Python爬虫学习,批量爬取下载抖音视频
  10. 2021 CCF CSP-J2