1.首先表达式的空格。
2.循环计算最内层带括号的表达式(提取运算符出现的顺序,然后计算)
3.计算最外层的表达式输出。
刚接触python,代码不够严谨,仅实现功能。不知道如何在函数中使用运算符变量做运算(使用的时候是字符串形式),希望知道的朋友告诉我,互相学习一下。
import re,math
def qcysf(s):
while re.findall('\+\-|\+\+|\-\-|\-\+',s):
s = s.replace('+-','-')
s = s.replace('++','+')
s = s.replace('--','+')
s = s.replace('-+','-')
return s
def yunsuan(a1):
temp1 = re.sub('\d|\.|\+|-| ','',a1)
# print(temp1)
# print(a1)
for i in temp1:
if i == "*":
b = re.search('(-?\d+\.?\d*\*-?\d+\.?\d*)', a1).group()
# print(b)
temp2 = round(float(b.split('*')[0]) * float(b.split('*')[1]),10)
temp2 = '+' + str(temp2)
a1 = a1.replace(b, temp2,1)
# print(a1)
else:
b = re.search('(-?\d+\.?\d*/-?\d+\.?\d*)', a1).group()
# print(b)
temp2 = round(float(b.split('/')[0]) / float(b.split('/')[1]),10)
temp2 = '+' + str(temp2)
a1 = a1.replace(b, temp2,1)
# print(a1)
a1 = qcysf(a1)
# print(a1)
a2 = a1.lstrip('-')
temp3 = re.sub('\d|\.| ', '', a2)
for i in temp3:
if i == "+":
b = re.search('(-?\d+\.?\d*\+\d+\.?\d*)', a1).group()
temp2 = round(float(b.split('+')[0]) + float(b.split('+')[1]),10)
a1 = a1.replace(b, str(temp2),1)
# print(a1)
else:
b = re.search('(\d+\.?\d*\-\d+\.?\d*)', a1).group()
temp2 = round(float(b.split('-')[0]) - float(b.split('-')[1]),10)
a1 = a1.replace(b, str(temp2),1)
# print(a1)
return a1 if __name__ == "__main__":
a = input('请输入你要计算的内容:')
a = a.replace(' ','')
# print(a)
if re.findall('[a-zA-Z]]',a):
print('你输入的内容不合法')
else:
while re.search("\([^()]+\)", a):
b = re.search("\([^()]+\)", a).group()
# b = qcysf(b)
# print(a)
# print(b)
b1 = re.sub('\(|\)','',b)
# print(a)
temp = yunsuan(b1)
a = a.replace(b, str(temp))
# print('这是倒数第二个',a)
a = qcysf(a)
a = yunsuan(a)
print(a)

请输入你要计算的内容:1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )
2776672.6951997215

python3简单实现支持括号的加减乘除运算的更多相关文章

  1. python3 简单实现从csv文件中读取内容,并对内容进行分类统计

    新手python刚刚上路,在实际工作中遇到如题所示的问题,尝试使用python3简单实现如下,欢迎高手前来优化import csv #打开文件,用with打开可以不用去特意关闭file了,python ...

  2. BigDecimal加减乘除运算(转)

    java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val) Translates a doub ...

  3. 精确的double加减乘除运算工具类

    import java.math.BigDecimal; /** * 精确的double加减乘除运算 * @author cyf * */ public class DoubleUtil { /** ...

  4. 新浪面试题:只允许使用++操作符实现加减乘除运算(c语言版)

    //假定a,b都是正整数,只允许使用++而不使用-,--,*,/操作符的情况下实现加减乘除运算 //使用++实现加法: int jiafa(int a,int b){ for (int i=0;i&l ...

  5. Python3 简单的三级列表思路

    Python3 简单的三级列表思路(初学者 比较low) 代码如下: info = { '北京':{ '沙河':['benz','momo'], '朝阳':['北土城','健德门'], '国贸':[' ...

  6. python3安装,支持openssl,支持采集https

    python3安装,支持openssl,支持采集https 坑好多,特别是安装的时候,各种不匹配,服务器默认配置是python2,升级3后,采集的时候用到openssl,花了两天也没搞定各种错误,也许 ...

  7. C#:继承多态的方法实现数的简单加减乘除运算

       // 定义一个抽象的父类     abstract class Figure     {         //声明抽象方法:         //父类中的所有家里人可以用的方法必须都应用到子类中 ...

  8. 简单的java程序通过对话框输出 计算加减乘除运算(运算方法可选择)

    import javax.swing.JOptionPane; // import class JOptionPane public class Addition { public static vo ...

  9. Android:随机生成算数四则运算简单demo(随机生成2~4组数字,进行加减乘除运算)

    首先创建一个新的Android工程,下面是页面布局: Java代码: 我们先来分析一下如何完成的步骤: 1.首先,先完成生成随机数.(包括随机生成几组数字,范围为多少的数字,四则运算符号等): 2.要 ...

随机推荐

  1. MediaManager配置公网访问功能

    安装时设置传输本地地址及端口,如图: 路由器设置端口映射,如下图 使用时,打开公网地址http://IpAddress:8090/ContentManager/MainPage.aspx?zh-CN# ...

  2. 禁止Cnario Player启动后自动开始播放

    Cnario Player安装激活后, 默认开机后自动启动, 启动加载内容完成后进入10秒倒计时, 10秒后即开始播放关机前播放的内容. 如果不想让其自动开始播放, 可按照如下办法设置其不自动播放. ...

  3. spring多模块项目手动整合

    一.分别创建parent entity dao service controller web等模块项目,如图: 二.parent项目添加依赖 <!-- 集中定义依赖版本号 --> < ...

  4. 关于Tomcat

    详情转自:http://blog.csdn.net/jiuqiyuliang/article/details/48094373和http://blog.csdn.net/u012934325/arti ...

  5. ADO.Net笔记整理(一)

    几次装机,Notes已烟消云散,近日因为Node.js死活搞不定,无奈装机,备份好的东东,没想到磁盘扇区出现异常,可能是PE启动盘的病毒,只好将磁盘全部重新分区,恢复数据也懒得恢复了,日积月累关乎将来 ...

  6. mac 重装系统

    Mac打算送人,现在退出自己的帐号恢复出厂设置. 协助工具下载:链接:https://pan.baidu.com/s/1vHt-Mk4otawEGidyz_WW2g 提取码:9ax6 用transma ...

  7. CSS3基础入门03

    CSS3 基础入门03 线性渐变 在css3当中,通过渐变属性实现之前只能通过图片实现的渐变效果.渐变分为线性渐变和径向渐变以及重复渐变三种.线性渐变的模式主要是颜色从一个方向过渡到另外一个方向,而径 ...

  8. vscode常用插件

    vscode写JS/html/css是比较适合的,因为轻量级. 只是需要一些插件来完善VSCODE功能,感觉VSCODE就是要靠插件的,不然的话,只是一个高级的代码编辑器.可能比editplus&qu ...

  9. [PL]如果天空是黑暗的,那就摸黑生存

    “如果天空是黑暗的,那就摸黑生存:如果发出声音是危险的,那就保持沉默:如果自觉无力发光的,那就蜷缩于墙角.但不要习惯了黑暗,就为黑暗辩护:不要为自己的苟且而得意:不要嘲讽那些比自己更勇敢更热情的人们. ...

  10. 第四十四篇--做一个简单的QQ登录界面

    功能:输入用户名和密码,正确,显示登录成功,为空的话,提示用户名和密码不能为空,还有记住密码功能. MainActivity.java package com.aimee.android.play.q ...