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爬虫程序分析得很好!
随机推荐
- BZOJ5018[Snoi2017]英雄联盟——DP
题目描述 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不 了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄,因此,他也只 ...
- BZOJ4377[POI2015]Kurs szybkiego czytania——数学思维题
题目描述 给定n,a,b,p,其中n,a互质.定义一个长度为n的01串c[0..n-1],其中c[i]==0当且仅当(ai+b) mod n < p.给定一个长为m的小01串,求出小串在大串中出 ...
- Js 百分比进度条
[构想] CSS3 + JS CSS3控制进度 利用CSS3中的 @keyframes JS实现百分比 根据CSS来调整,时间 [页面代码] 第一种: 默认直接进入就是下载 CSS代码 body { ...
- float 、double 加减乘除出现小数位多出的问题
/** * 提供精確的加法運算 * @param args */ public static double add(double v1, double v2) { BigDecimal b1 = ne ...
- jsp操作MySQL时报错:Operation not allowed after ResultSet closed
一个stmt对多个rs进行操作引起的ResultSet关闭的错误 解决办法:创建新的stmt,一个rs对应一个stmt
- Centos7下Zabbix3.4至Zabbix4.0的升级步骤
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Centos7下Zabbix3.4至Zabbix4.0的升级步骤 查看现在centos版本和zab ...
- 自学Aruba5.3.4-Aruba安全认证-有PEFNG 许可证环境的认证配置802.1x
点击返回:自学Aruba之路 自学Aruba5.3.4-Aruba安全认证-有PEFNG 许可证环境的认证配置802.1x 1. 采用InterDB认证服务器完成802.1X认证 (Aruba650) ...
- jieba分词器
始终觉得官方文档是最好的学习途径.嗯,我只是一个大自然的搬运工.传送门https://github.com/fxsjy/jieba 1.分词 jieba.cut 方法接受三个输入参数: 需要分词的字符 ...
- luogu P2181 对角线
题目大意: 给一个n边形,求出在所有任意三条对角线都不相交于同一个点的情况下,交点个数是多少.(即交点个数最多是多少) 分析: 题目很水,但是公式不好想. 由于任意三条对角线不会交于一点,所以所有的交 ...
- echarts3地图如何添加点击事件? 点击地图相应的区域ajax获取并展示本区域省下面所有市的信息
myChart.on('click', function (params) { var city = params.name; loadChart(city); });