python简易计算器教程_python 实现简易计算器
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 实现简易计算器相关推荐
- python 微信机器人教程_Python创建微信机器人(附赠Python视频教程)
微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地.今天我们要讲的便是如何用Python来做一个微信聊天机器人,突然想起鲁迅先生曾经说过的一句话: 因为是微信机器人 ...
- python独立网站教程_python做网站教程_如何免费做网站的教程
python学习指南教程 180x270 - 7KB - JPEG 图灵程序设计丛书:Python基础教程 260x317 - 12KB - JPEG 跳一跳python使用教程 微信跳一跳pytho ...
- python自学完整教程_python自学完整教程
[教程介绍] 想学习一门编程语言,是不是必须考上大学的计臬机专业,才能真正学会呢? 其实不是,在我们身边,很多初中生,甚至国外不少小学生都能把编程学好,通过自学,很多人都能成为编程高手. python ...
- python入门测试教程_Python测试入门
python入门测试教程 This tutorial is for anyone who has written a fantastic application in Python but hasn' ...
- python开发音乐播放器教程_python开发简易版在线音乐播放器示例代码
在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数 ...
- python新闻爬虫教程_python简易爬虫教程--(一)批量获取搜狐新闻
我们先从简单的抓取文本信息开始,来写我们的第一个爬虫程序,获取搜狐新闻的内容. 我们首先来介绍一下我们需要用到的库. 爬虫程序的步骤,一般可以分为三步: 1.获取网页源码(html源码): 2.从代码 ...
- 用python动态时钟代码_python实现简易动态时钟
本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...
- python动态时钟代码_python实现简易动态时钟
本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...
- python实现tcp通信_Python实现简易TCP通信程序
TCP简介 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP旨在适应支持多网络应用的分层协议层次结构. ...
最新文章
- Blender写实建筑场景制作学习教程 Exterior Visualization in Blender 2.9
- docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别
- oracle云产品是什么意思,Oracle云端产品线也要AI化,ERP云等4大主力云产品先升级...
- 算法:删除链表中重复的元素||
- html 如何判断文本溢出,判断文本是否溢出
- wordpress插件翻译不生效_新的恶意软件利用wordpress插件漏洞攻击数百万网站
- clion安装glfw_MacOS上使用Clion配置Vulkan开发环境
- 南阳师范学院ACM集训队博客使用方法
- javaweb实现分页查询(一)
- 关于Acegi的详细信息(配置)
- linux网络配置出现E325,Linux CentOS E325错误,如何解决?VI如何使用?
- 戴尔硬盘保护增强套件_戴尔4路机架式服务器R940XA原创图集,一部B级车的价值...
- 微运行库2015_vc2015运行库下载-Visual C++ 2015(vc2015)下载V14.0.24123 官方版【32位|64位|】-西西软件下载...
- 万特电能表接线仿真系统 软件_电工学习PLC和接线入门 之 无中生有(软件仿真)...
- 【阅读笔记】(语义分割最全总结,综述)《A Review on Deep Learning Techniques Applied to Semantic Segmentation》
- pip升级scapy报错It is a distutils installed project and thus we cannot accurately determine which files
- python中inf_认识python中的inf和nan
- Win10创建新用户账户
- 2013年第四届c b组省赛蓝桥杯
- 某医药公司HP-EVA4400数据恢复报告