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爬虫程序分析得很好!
随机推荐
- linux 内核参数优化----最大线程数限制及当前线程数查询
1.总结系统限制有: /proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值 /proc/sys/kernel/thread-max max_user_p ...
- BZOJ2213[Poi2011]Difference——DP
题目描述 A word consisting of lower-case letters of the English alphabet ('a'-'z') is given. We would li ...
- APICloud之封装webApp
注册用户 https://www.apicloud.com/ 使用步骤 进入开发控制台 创建应用 选择webApp 根据自己的情况填写信息,然后创建即可 应用创建后的界面 端设置 app界面设置 证书 ...
- window service 开发
为了便于window service的调试和开发. 我整理了一下代码,方便大家查阅 App.config 设置启动时间 timerStart-10点 interval-3600000 1小时检查一次 ...
- day5 列表
列表 查 索引(下标),默认从0开始 切片 .count 查某个元素的出现次数 .index 根据内容找元素的对应索引位置 增加 .append() 追加在最后 .insert(index,'内容') ...
- 【POJ3045】Cow Acrobats(贪心)
BUPT2017 wintertraining(16) #4 B POJ - 3045 题意 n(1 <= N <= 50,000) 个牛,重wi (1 <= W_i <= 1 ...
- bzoj4985 评分 (二分答案+dp)
首先二分一个答案x,然后我们把>=x的数看成1,<x的数看成0,那如果最后剩下1,这个答案就是合法的. 那我们就来算让某一位得1至少需要填几个1(设这个值是f[i]) i=1..n时,显然 ...
- java date总结
Java 8 中 Date与LocalDateTime.LocalDate.LocalTime互转 Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant ...
- C++类间相互引用
两个类相互包含引用的问题 不管是下文中提到的例子,还是任何情况,使得class A的头文件需要include class B的头文件,class B的也要引用A的头文件,这种状况下,貌似会出现有一个类 ...
- Centos6.5的MySQL5.7.15二进制源码单机版安装
0.说明 最近在CentOS6.5上安装mysql,想要知道具体的安装过程,不想要通过yum直接一键安装,折腾一番,但是总遇到些麻烦.于是将mysql文档中的关于如何在Linux上安装mysql的部分 ...