import re
formul='1 - 2 *( (6 0- 30+(0-40/5) * (9-2* 5/3 +7 /3*99/4*2998 +10 *568/14)) - (-4*3) / (16-3*2))'
def zhengli(func):
func = func.replace("+-","-").replace("--","+")
return func
def addjian(func):
func = func.strip("()")
ret = re.findall("-?\d*\.?\d+",func)
sum=
for i in ret:
sum +=float(i)
return str(sum)
def chengchu(func):
func = func.strip("()")
while("/"in func or "*" in func):
ret = re.search('\d*\.?\d+[\*/]-?\d*\.?\d',func).group()
digital = re.split('([\*/])',ret) #加个括号是为了优先级的原因,保留非数字
result = str(float(digital[])*float(digital[])) if digital[] == '*' else str(float(digital[])/float(digital[]))
func = func.replace(ret,result,)
func = zhengli(func)
return func def comput(formal):
formal = re.sub('\s','',formal)
while(re.search('\([^()]*\)',formal)):
print(formal)
ret = re.findall('\([^()]*\)',formal)
for i in ret:
print("wu kuohao:"+i)
result_chengchu = chengchu(i) if '*'in i or '/' in i else i#先算乘除
result_addjian = addjian(result_chengchu) if '+'in result_chengchu or '-' in result_chengchu else result_chengchu#再算加减
formal = formal.replace(i,result_addjian,)
formal = zhengli(formal)
else:
result_chengchu = chengchu(formal) if '*' in formal or '/' in formal else formal # 先算乘除
result_addjian = addjian(result_chengchu) if '+' in result_chengchu or '-' in result_chengchu else result_chengchu # 再算加减
return result_addjian print(comput(formul))

python 实现计算器功能 输入字符串,输出相应结果的更多相关文章

  1. 2. Python中的基本输入、输出、格式化

    本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本输入.输出.格式化 1. 输入 使用input([prompt])读取一行,将其转换为string类型并返回,input的 ...

  2. Python基础二(输入与输出)

    通常,一个程序都会有输入/输出,这样可以与用户进行交互.用户输入一些信息,你会对他输入的内容进行一些适当的操作,然后再输出给用户想要的结果.Python的输入/输出,我们可以用input进行输入,pr ...

  3. Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

    一.字符串输出及运算 1.常用输出格式及方法 ')#单引号 ")#双引号 """)#三个引号 1234567890 1234567890 1234567890 ...

  4. 小白学Python(3)——输入和输出,显示你的名字

    任何计算机程序都是为了执行一个特定的任务,有了输入,用户才能告诉计算机程序所需的信息,有了输出,程序运行后才能告诉用户任务的结果. 输入是Input,输出是Output,因此,我们把输入输出统称为In ...

  5. 利用PYTHON设计计算器功能

    通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ))- (-4*3 ...

  6. Python系列教程(三):输入和输出

    1.1 raw_input() 在Python中,获取键盘输入的数据的方法是采用 raw_input 函数(至于什么是函数,咱们以后的章节中讲解),那么这个 raw_input 怎么用呢? 看如下示例 ...

  7. python语言学习5——输入和输出

    输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字. 注意点: 字符串用的是单引号 碰到逗号输出时就会输出一个空格 输入 python提供了一个input(),可以让用户输入一个字 ...

  8. Python+OpenCV4:读写输入和输出的简单实践(图片、视频、摄像头)

    典型的文件处理流程如下: 利用命令行参数 sys.argv 命令行参数是读取文件时常用的方式. 命令行参数保存在 sys.argv 的列表中,列表的第一个元素是脚本名称,后面的元素是命令行参数: 通过 ...

  9. 【python】文件的输入和输出

    1.os模块 2.os.path 模块 3.实例 1. os模块 对文件系统的访问大多通过python的os模块实现,其中os 模块负责大部分的文件系统操作,包括删除/重命名文件,遍历目录树,管理文件 ...

随机推荐

  1. STP-3-收敛到新的STP拓扑

    事实上,即使拓扑已经稳定,STP也从未停止工作,对每个收到的BPDU,交换机都会重新计算自己对于根桥,RP,DP的选择.在稳定的拓扑中,交换机收到的BPDU不变,因此对这些BPDU的处理会一遍一遍产生 ...

  2. Influxdb 时序数据库 windows 安装

    Influxdb 是一款比较火爆的时序数据库,本文介绍如何在 windows 平台下安装. 1.场景: windows 平台的 influxdb 似乎只支持单机非windows 服务的安装方式 适用于 ...

  3. springMVC-上传图片

    SpringMVC文件上传与下载 上传图片 配置多媒体文件解析器 配置虚拟目录 在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加: <Context doc ...

  4. 转 造成ORA-01843 无效的月份的一些原因

  5. 生产环境中mysql+keepalive双主模式,keepalive守护进程实现双主切换提供数据库服务

    mysql+keepalive实现浮动地址自动切换,由于keepalive无自带健康检查功能,所以必须自动编写健康检查守护进程(监控DB1和DB2数据库的监控状态,来保证浮动地址双机自动切换.) 一, ...

  6. 渣渣菜鸡为什么要看 ElasticSearch 源码?

    前提 人工智能.大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需,大型企业早已淹没在系统生成的浩瀚数据流当中.大数据技术业已集中在如何存储和处理这些海量的数据上.Elast ...

  7. this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符

    1.this关键字的作用     1)调用本类中的属性;     2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用     3)表示当前对象; 2.匿名对象     ...

  8. vba控制图表,excel图表,一键完成

    来源http://club.excelhome.net/thread-1417686-1-1.html 官方教程链接 https://docs.microsoft.com/zh-cn/office/v ...

  9. (八)maven学习之继承

    继承 如果项目划分了多个模块,都需要依赖相似的jar包,只需要创建一个父模块,在它的pom.xml文件中配置依赖的jar包.功能模块只需要继承父模块,就可以自动得到其依赖的jar包,而不需要再每个模块 ...

  10. PHP 哈希表碰撞攻击

    理想情况下哈希表插入和查找操作的时间复杂度均为O(1),任何一个数据项可以在一个与哈希表长度无关的时间内计算出一个哈希值(key),然后在常量时间内定位到一个桶(术语bucket,表示哈希表中的一个位 ...