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 - 计算器 程序练习的更多相关文章

  1. 7_python之路之python计算器

    7_python之路之python计算器 1.程序说明:Readme.cmd 1.程序文件及说明: calculator.py 2.python版本:python-3.5.3 3.程序使用:pytho ...

  2. Github Python计算器开源项目 二次开发--增加函数图形

    先上原项目链接:https://github.com/xhf79/Calculator_pyqt python+Qt 开发的计算器 原项目界面和功能如图所示: 科学计算的内容基本都有,但按照项目的提示 ...

  3. 运行easy_install安装python相关程序时提示failed to create process

    运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...

  4. Apache运行python cgi程序

    Apache运行python cgi程序 环境 win10 x64 专业版 Apache2.4 python 2.7 Apache安装和配置 Apache服务器的安装请自行搜索.在Apache2.4中 ...

  5. python 计算器的(正则匹配+递归)

    经过2天的长时间的战斗,python计算器终于完成了. import re val="1-2*((60-30*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3 ...

  6. 单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 WEB

    对单复利计算器程序进行改进 更新为网页版的. 界面不太美观 请谅解 由于时间问题暂未完善好! 计算部分的主要源代码:

  7. 纯javascript代码编写计算器程序

    今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 具体代码如下:(关注我的博客,及时获取最新WEB前 ...

  8. python 整型--《Python 3程序开发指南》笔记

    参考:<Python 3程序开发指南> 整数转换函数: bin(i) 返回整数i的二进制表示(字符串) hex(i) 返回i的十六进制表示(字符串) int(x) 将x转换为整数,失败产生 ...

  9. python爬虫程序

    http://blog.csdn.net/pleasecallmewhy/article/details/8922826 此人的博客关于python爬虫程序分析得很好!

随机推荐

  1. BZOJ3932[CQOI2015]任务查询系统——主席树

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第E ...

  2. 平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)

    在刷了许多道平衡树的题之后,对平衡树有了较为深入的理解,在这里和大家分享一下,希望对大家学习平衡树能有帮助. 平衡树有好多种,比如treap,splay,红黑树,STL中的set.在这里只介绍几种常用 ...

  3. UVALive5876-Writings on the Wall-KMP

    有两段字符串,第一段的尾和第二段的头可能重合.问有多少种组合的可能. 需要理解一下next数组的意义. #include <cstdio> #include <cstring> ...

  4. POJ3258-River Hopscotch-二分答案

    一条河里有一串石头,给出石头间的间距,让你去掉m个石头,使最短间距最大. 二分答案,对于每一种mid,判断要不要删除这块石头.然后逼近答案. #include <cstdio> #incl ...

  5. 自学Linux Shell14.2-在脚本中使用其他文件描述符

    点击返回 自学Linux命令行与Shell脚本之路 14.2-在脚本中使用其他文件描述符 在脚本中重定向输入和输出,并布局限于以上讲的3个默认的文件描述符,shell最多可以有9个打开的文件描述符.这 ...

  6. break、continue区别

    break命令break命令允许跳出所有循环(终止执行后面的所有循环).下面的例子中,脚本进入死循环直至用户输入数字大于5.要跳出这个循环,返回到shell提示符下,就要使用break命令.1. #! ...

  7. Mysql服务器处理客户端请求流程

    在日常执行mysql语句的过程中,都是客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果). 看似很简单,其实不然,这内容有很多东西是需要注意的 ...

  8. A1054. The Dominant Color

    Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of i ...

  9. C++11并发——多线程std::thread (一)

    https://www.cnblogs.com/haippy/p/3284540.html 与 C++11 多线程相关的头文件 C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是< ...

  10. (递推)一只小蜜蜂... hdu2044

    一只小蜜蜂... 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044 Time Limit: 2000/1000 MS (Java/Others)    ...