python - 计算器 程序练习
v1.0 计算器(数据内不含括号方式:)
- import re
- def jisuan(a,b,c):
- sun_count = 0
- if c =="+":
- sun_count = str(float(a[b.index(c)]) + float(a[b.index(c) + 1]))
- elif c =="-":
- sun_count = str(float(a[b.index(c)]) - float(a[b.index(c) + 1]))
- elif c == "*":
- sun_count = str(float(a[b.index(c)]) * float(a[b.index(c) + 1]))
- elif c == "/":
- sun_count = str(float(a[b.index(c)]) / float(a[b.index(c) + 1]))
- a.remove(a[b.index(c)])
- a.remove(a[b.index(c)])
- a.insert(b.index(c), sun_count)
- b.remove(b[b.index(c)])
- #测试数据:
- # '100.5+4*5/2-3*2*2/4+9'
- # '100.5+4/2-3*9*2-4+9'
- # '10+15/5+2-9*2-100'
- # '1+2+3+4+5+6+7+8+9'
- # '100-1-3-5-6-7-8-77-6-5'
- # '3*6*7*9*34*45*99'
- n='100.5+4/2-3*9*2-4+9'
- n2 = eval(n)
- print("eval函数执行结果:",n2)
- a = re.findall(r"\d+\.\d+|\d+",n)
- b = re.findall(r"[+|\-|\*|\/]",n)
- # print(a)
- # print(b)
- while b:
- if '*'in b or '/'in b:
- for i in b:
- if i == '*':
- jisuan(a,b,"*")
- elif i == "/":
- jisuan(a, b, "/")
- else:
- if b[0] == "+":
- jisuan(a, b, "+")
- elif b[0] == '-':
- jisuan(a, b, "-")
- print("程序执行结果:",a[0])
v2.0 计算器
- import re
- def jisuan(a,b,c):
- sun_count = 0
- if c =="+":
- sun_count = str(float(a[b.index(c)]) + float(a[b.index(c) + 1]))
- elif c =="-":
- sun_count = str(float(a[b.index(c)]) - float(a[b.index(c) + 1]))
- elif c == "*":
- sun_count = str(float(a[b.index(c)]) * float(a[b.index(c) + 1]))
- elif c == "/":
- sun_count = str(float(a[b.index(c)]) / float(a[b.index(c) + 1]))
- a.remove(a[b.index(c)])
- a.remove(a[b.index(c)])
- a.insert(b.index(c), sun_count)
- b.remove(b[b.index(c)])
- def xunhuan(a,b):
- while b:
- if '*' in b or '/' in b:
- for i in b:
- if i == '*':
- jisuan(a, b, "*")
- elif i == "/":
- jisuan(a, b, "/")
- else:
- if b[0] == "+":
- jisuan(a, b, "+")
- elif b[0] == '-':
- jisuan(a, b, "-")
- #测试数据:
- # '100.5+4*5/2-3*2*2/4+9'
- # '100.5+4/2-3*9*2-4+9'
- # '10+15/5+2-9*2-100'
- # '1+2+3+4+5+6+7+8+9'
- # '100-1-3-5-6-7-8-77-6-5'
- # '3*6*7*9*34*45*99'
- # '1-2*((60-30+(40/5+3)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(4*3)/(16-3*2))'
- # '1-2*(60-30+(40/5+3))'
- # '1-2*(60-30+(40/5+3)+(9+22))'
- # '3*(4+50)-(3*2*2/4+9)*(((3+4)-4))'
- # '3*(4+50)-((100+40)*5/2-3*2*2/4+9)*(((3+4)-4))'
- n='1-2*(60-30+(40/5+3)+(9+22))'
- # print(n)
- while 1:
- if "("in n or ")" in n:
- kh = re.search(r"\([^(]([\d+\.\d|\-\d+\.\d+|\-|\*|\/]+)[^)]\)",n)
- # print(kh.group())
- if kh.group():
- a = re.findall(r"\d+\.\d+|\d+",kh.group())
- b = re.findall(r"[+|\-|\*|\/]",kh.group())
- # print(a)
- # print(b)
- xunhuan(a,b)
- # print(a[0])
- sou = re.compile(r"\([^(]([\d+\.\d|\-\d+\.\d+|\-|\*|\/]+)[^)]\)")
- n = n.replace(kh.group(),str(a[0]))
- # print(n)
- # print("-"*40)
- else:
- a = re.findall(r"\d+\.\d+|\d+", n)
- b = re.findall(r"[+|\-|\*|\/]", n)
- xunhuan(a, b)
- print("程序执行结果:",a[0])
- break
- n2 = eval(n)
- print("eval函数执行结果:",n2)
python - 计算器 程序练习的更多相关文章
- 7_python之路之python计算器
7_python之路之python计算器 1.程序说明:Readme.cmd 1.程序文件及说明: calculator.py 2.python版本:python-3.5.3 3.程序使用:pytho ...
- Github Python计算器开源项目 二次开发--增加函数图形
先上原项目链接:https://github.com/xhf79/Calculator_pyqt python+Qt 开发的计算器 原项目界面和功能如图所示: 科学计算的内容基本都有,但按照项目的提示 ...
- 运行easy_install安装python相关程序时提示failed to create process
运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...
- Apache运行python cgi程序
Apache运行python cgi程序 环境 win10 x64 专业版 Apache2.4 python 2.7 Apache安装和配置 Apache服务器的安装请自行搜索.在Apache2.4中 ...
- python 计算器的(正则匹配+递归)
经过2天的长时间的战斗,python计算器终于完成了. import re val="1-2*((60-30*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3 ...
- 单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 WEB
对单复利计算器程序进行改进 更新为网页版的. 界面不太美观 请谅解 由于时间问题暂未完善好! 计算部分的主要源代码:
- 纯javascript代码编写计算器程序
今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 具体代码如下:(关注我的博客,及时获取最新WEB前 ...
- python 整型--《Python 3程序开发指南》笔记
参考:<Python 3程序开发指南> 整数转换函数: bin(i) 返回整数i的二进制表示(字符串) hex(i) 返回i的十六进制表示(字符串) int(x) 将x转换为整数,失败产生 ...
- python爬虫程序
http://blog.csdn.net/pleasecallmewhy/article/details/8922826 此人的博客关于python爬虫程序分析得很好!
随机推荐
- BZOJ2803[Poi2012]Prefixuffix——hash
题目描述 对于两个串S1.S2,如果能够将S1的一个后缀移动到开头后变成S2,就称S1和S2循环相同.例如串ababba和串abbaab是循环相同的.给出一个长度为n的串S,求满足下面条件的最大的L: ...
- ajax 提交数组 泛型集合(二)
最近在项目中,使用 mvc架构,model层使用code first 碰见一个问题,前台json传递数据给后台action的复杂对象,发现复杂对象中的list范型集合并没有获取到数据. 研究半天,终于 ...
- 自学Zabbix4.2 web监控项创建+item详解
自学Zabbix4.2 web监控项创建+item详解 1. web监控项创建 1.1 Scenario 选项卡 Name: 监控项的名称 Application: 放到哪个应用中 Authenti ...
- java匹配竖线的错误警示
String s1 = "|"; // 输出 | System.out.println(s1); String s2 = s1.replaceAll("|",& ...
- luogu P2181 对角线
题目大意: 给一个n边形,求出在所有任意三条对角线都不相交于同一个点的情况下,交点个数是多少.(即交点个数最多是多少) 分析: 题目很水,但是公式不好想. 由于任意三条对角线不会交于一点,所以所有的交 ...
- 由asp的一个错误,看语言的不同:asp & java
今天查看网页源代码,无意发现源代码尾部抛出asp的错误信息,但没有显示在网页上. 如果没查看源代码,还没发现asp运行代码出错了. 大致情况是这样,在asp中,有一个变量来表示用户当前使用的容量,注意 ...
- 初探ant-design(web版本二)
Dropdown下拉菜单 向下弹出的列表. 何时使用# 当页面上的操作命令过多时,用此组件可以收纳操作元素.点击或移入触点,会出现一个下拉菜单.可在列表中进行选择,并执行相应的命令. 最简单的下拉菜单 ...
- MySQL中双NDBD节点Cluster快速配置
是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.在MyQL 5.0及以上的二进制版本中.以及与最 ...
- GO语言的进阶之路-网络安全之proxy
GO语言的进阶之路-网络安全之proxy 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在党的带领下,我们大陆的孩子身心健康还是杠杠的,尤其是像我这种农村孩纸,从来不会像<人 ...
- 函数和常用模块【day06】:re模块(九)
本节内容 1.简述 2.常用的正则表达式符号 3.常用匹配方法 4.常用方法 5.反斜杠的困扰 6.其他匹配模式 7.总结 一.简述 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程 ...