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爬虫程序分析得很好!
随机推荐
- GitHub && GitLab
1.github介绍 Git作为一个开源的分布式版本控制系统,已经被越来越多的人使用,随之需要的就是需要有个专门的地方存储.管理通过Git上传的项目,这就是gitHub gitHub是一个面向开源及私 ...
- ajax 调用 java webapi 多个参数(一)
最近开发 java webapi. 遇到一个问题,如果是多个参数(其中包含对象类型),我应该怎么传递? 一 先看解决方案: ajax <script> var data={ " ...
- hdu 4897 Little Devil I (树链剖分+线段树)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4897 题意: 给你一棵树,一开始每条边都是白色,有三种操作: 1.将 u - v路径上的边转换颜色 ...
- day30 hashlib模块
hashlib 提供摘要算法 最常见的就是MD5,当然一般来说MD5已经被足够了 不管算法多不一样,但是摘要的功能是不变的 对于相同的字符串进行摘要,使用同一个算法得到的值总是不变的 不同算法的话,会 ...
- C++ 容器:顺序性容器、关联式容器和容器适配器
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
- 解决centos6.5不能识别NTFS格式的移动硬盘或U盘问题
0.说明 从windows8拷了一些东西到移动硬盘,然后转到新安装的centos6.5系统上,但是插上移动硬盘的时候发现不能识别,无法正常挂载移动硬盘.到网上一搜,发现原来centos系统默认不识别N ...
- ioi2018集训队自选题:最短路练习题
题意:链接 定义pos[i]表示i这个值在数组里的下标. 我们先用单调栈找到每个元素左边和右边第一个比它大的元素$l_i$和$r_i$,然后建一棵二叉树,我们就叫做maxtree吧 (upd:mdzz ...
- UML简单熟悉
+ :代表public - :代表private # :代表protected 实现,继承关系:implements,extends 关联关系:使一个类知道另一个类的属性和方法 每一个Driver类 ...
- idea tomcat上传图片,无法显示的问题解决
真是浪费时间啊,之前eclipse下的tomcat 去webapps下找就行了,这倒好,idea下根本没有. 我上传的目录建在项目中的static中了,upload文件夹,上传到这里肯定是找不到了的: ...
- Mysql占用CPU过高如何优化,如何解决
2017-02-28 15:13 331人阅读 评论(0) 收藏 举报 MySQL占用CPU过高如何优化 一次生产DB服务器的 超负荷运行问题解决: 1.查看生产DB服务器top列表, 执行 to ...