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. ceph 安装过程

    安装依赖: yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org ...

  2. BZOJ2008 JSOI2010连通数(floyd+bitset)

    一直不明白为什么要用floyd求传递闭包,直接搜不是更快嘛……不过其实可以用bitset优化,方法也比较显然.bitset是真的神奇啊,好多01状态且转移相似的东西都可以用这个优化一下. #inclu ...

  3. Codeforces Round #337 (Div. 2) B. Vika and Squares

    B. Vika and Squares time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. [luogu3455][POI2007]ZAP-Queries【莫比乌斯反演】

    题目描述 FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得 ...

  5. Angularjs中的$q详解

    先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过 ...

  6. 【POJ3585】Accumulation Degree 二次扫描与换根法

    简单来说,这是一道树形结构上的最大流问题. 朴素的解法是可以以每个节点为源点,单独进行一次dp,时间复杂度是\(O(n^2)\) 但是在朴素求解的过程中,相当于每次都求解了一次整棵树的信息,会做了不少 ...

  7. Hashtable 删除元素, 抛出异常 java.util.ConcurrentModificationException

    今天在对一个Hashtable对象进行 搜索 -> 删除 操作时遇到的一个问题,开始的使用我使用的是Hashtable的Iterator,然后直接执行: Hashtable.remove(key ...

  8. 2018 ACM 网络选拔赛 徐州赛区

    A. Hard to prepare #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  9. SQL Server 一句Sql把表结构全部查询出来

    --一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...

  10. 1032. Sharing (25)

    To store English words, one method is to use linked lists and store a word letter by letter. To save ...