import re
def main():
#""代表的是空,split()方法已空格或者\t,\n进行切割,join方法是列表,元组,字典变为字符串
a = "".join("1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + \
7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )".split())
while True:
if '(' in a: #只要有括号就循环
ct = re.search(r'[(]([^()]+[)])',a) #查找()的内容,[^()]非括号的内容,所以刚开始只能(-40/5)
print(ct)
if ct is not None:
b = ct.group()
print(b)
c = count(b) #放到计算式进行计算
a = re.sub(r'[(]([^()]+[)])',str(c),a,1) #括号内的内容进行替换
print(a)
else:
c = count(a)
print(c)
break def add_min(a):
"""
计算加减法
:param a:
:return:
"""
if "--" in a:
a = a.replace('--','+')
c = re.findall(r'-?\d+\.?\d*',a)
ls = []
for i in c:
ls.append(float(i))
rest = sum(ls) #sum函数可以对负数进行处理
return rest def mul(a):
"""
计算乘法
:param a:
:return: a
"""
b = re.search(r'\d+\.?\d*(\*-?\d+\.?\d*)',a).group()
print(b)
if b is not None:
rest = 1
c = re.findall(r'-?\d+\.?\d*',b)
ls = []
for item in c:
ls.append(float(item))
for i1 in range(len(ls)):
rest = rest * ls[i1]
a = re.sub(r'\d+\.?\d*(\*-?\d+\.?\d*)+',str(rest),a,1)
return a def div(a):
"""
计算除法
:param a:
:return:
"""
b = re.search(r'\d+\.?\d*(\/-?\d+\.?\d*)+',a)
if b is not None:
b = b.group()
print(b)
c = re.findall(r'-?\d+\.?\d*',b)
ls = []
for i in c:
ls.append(float(i))
rest = ls[0]
for i1 in range(1,len(ls)):
rest = rest / ls[i1]
a = re.sub(r'\d+\.?\d*(\/-?\d+\.?\d*)+',str(rest),a,1) #此处负号没有匹配,负号进行了保留
return a def count(b):
"""
根据不同符号,调用不同的计算公式,计算出结构
:param b:
:return:
"""
while True: #while循环,只有遇到break和return才会结束循环
if '*' in b: #while循环,只要if语句成立,if结束之后就会重头开始循环,这就是while语句
c = b.split('*')
print(c)
if '/' in c[0]:
b = div(b) #b得到返回值,就再次进行以上的匹配
else:
b = mul(b)
elif '/' in b:
b = div(b)
elif '+' or '-' in b:
b = add_min(b)
return b
else:
return b
main()

python 计算器的更多相关文章

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

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

  2. Python计算器实操

    要求: 开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * ...

  3. 7_python之路之python计算器

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

  4. 作业1开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  5. 老男孩python作业5-开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  6. project1_calculator(使用tkinter实现python计算器,含有具体过程与注释)

    最终的运行效果图(程序见序号7): #!/usr/bin/env python# -*- coding:utf-8 -*-# ------------------------------------- ...

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

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

  8. python计算器

    思路:优先级处理思路一:正则表达式+递归(计算时间慢)思路二:堆栈的方式队列:先进先出电梯-->队列上电梯(入队123):第三个人3,第二个人2,第一个人1>>> li = [ ...

  9. 开发一个简单的python计算器

    要求: 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4* ...

  10. 初版python计算器

    作业: 使用正则表达式实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 先看运行结果: 请输入您的计算式: 1 - 2 * ( (60-30 +(-40.0/5) * ...

随机推荐

  1. Jmeter性能测试之参数化(二)

    Jmeter参数化主要有3种方式: 1. Add--> Pre Processors--> User Parameters 2. Add--> Config Element--> ...

  2. JDBC 返回主键

    转载至:https://www.liyongzhen.com/ 上一节课里我们学习通过PreparedStatement对象执行带参数的查询SQL和修改SQL. 这节课我们学习使用 PreparedS ...

  3. INotifyPropertyChanged 接口

    INotifyPropertyChanged 接口 用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象.若要提供 ...

  4. CSS 实现左侧固定,右侧自适应两栏布局的方法

    "左边固定,右边自适应的两栏布局",其中有老生常谈的float方法,BFC方法,也有CSS3的flex布局与grid布局.并非所有的布局都会在开发中使用,但是其中也会涉及一些知识点 ...

  5. 网络安全第一集之【SQL注入:sqlmap入门】

    1,安装sqlmap和python环境 2,对于环境变量超长问题 3,使用sqlmap: sqlmap.py -u "http://k2.hlxy.net/csdw/news1.asp?dp ...

  6. DWM1000 多个标签定位讨论 --[蓝点无限]

    多标签代码已经基本实现,完成代码可以在论坛上下载 http://bphero.com.cn/forum.php?mod=viewthread&tid=53&fromuid=2  蓝点D ...

  7. 项目部署到tomcat

    准备工作 第一步 准备项目部署文件 准备项目中使用的数据库.sql文件. 准备项目程序(整个项目的war包文件) 第二步 安装运行环境 依次安装JDK.TOMCAT.MYSQL NAVICAT需要注意 ...

  8. 阿里云 Windows 2012 如果安装IIS

    用可视化安装如果出错, 那就用 windows powershell 安装 https://help.aliyun.com/knowledge_detail/40959.html?spm=5176.1 ...

  9. NOIP-质因数分解

    题目描述 已知正整数n是两个不同的质数的乘积,试求出较大的那个质数. 输入描述: 输入只有一行,包含一个正整数n. 输出描述: 输出只有一行,包含一个正整数p,即较大的那个质数. #include&l ...

  10. ElasticSearch 一

    一:elasticSearch的目录结构的分类 /bin 运行ElasticSearch实例和管理插件呢的一些脚本 /config 配置文件 路径,包含elasticsearch.yml /data ...