python3简单实现支持括号的加减乘除运算
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简单实现支持括号的加减乘除运算的更多相关文章
- python3 简单实现从csv文件中读取内容,并对内容进行分类统计
新手python刚刚上路,在实际工作中遇到如题所示的问题,尝试使用python3简单实现如下,欢迎高手前来优化import csv #打开文件,用with打开可以不用去特意关闭file了,python ...
- BigDecimal加减乘除运算(转)
java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val) Translates a doub ...
- 精确的double加减乘除运算工具类
import java.math.BigDecimal; /** * 精确的double加减乘除运算 * @author cyf * */ public class DoubleUtil { /** ...
- 新浪面试题:只允许使用++操作符实现加减乘除运算(c语言版)
//假定a,b都是正整数,只允许使用++而不使用-,--,*,/操作符的情况下实现加减乘除运算 //使用++实现加法: int jiafa(int a,int b){ for (int i=0;i&l ...
- Python3 简单的三级列表思路
Python3 简单的三级列表思路(初学者 比较low) 代码如下: info = { '北京':{ '沙河':['benz','momo'], '朝阳':['北土城','健德门'], '国贸':[' ...
- python3安装,支持openssl,支持采集https
python3安装,支持openssl,支持采集https 坑好多,特别是安装的时候,各种不匹配,服务器默认配置是python2,升级3后,采集的时候用到openssl,花了两天也没搞定各种错误,也许 ...
- C#:继承多态的方法实现数的简单加减乘除运算
// 定义一个抽象的父类 abstract class Figure { //声明抽象方法: //父类中的所有家里人可以用的方法必须都应用到子类中 ...
- 简单的java程序通过对话框输出 计算加减乘除运算(运算方法可选择)
import javax.swing.JOptionPane; // import class JOptionPane public class Addition { public static vo ...
- Android:随机生成算数四则运算简单demo(随机生成2~4组数字,进行加减乘除运算)
首先创建一个新的Android工程,下面是页面布局: Java代码: 我们先来分析一下如何完成的步骤: 1.首先,先完成生成随机数.(包括随机生成几组数字,范围为多少的数字,四则运算符号等): 2.要 ...
随机推荐
- C语言之输入月收入,输出该月应纳税额-2019(简易版)
#include<stdio.h> #include<stdlib.h> #include<string.h> #define s1 0.03 //税率b < ...
- Linux操作系统计划任务
++++++++++++++++++++++++++++++++++++++++++++++++标题:Linux操作系统的计划任务内容:计划任务分为单次任务和周期性任务,周期任务分为系统级计划任务和用 ...
- NodeJs之服务搭建与数据库连接
NodeJs之服务搭建与数据库连接 一,介绍与需求分析 1.1,介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻 ...
- HTML、CSS、JS中常用的东西在IE中兼容问题汇总
1.因为国内360浏览器.QQ浏览器等更新较快,所以不考虑Chrome支持某个css与否,因为一般都支持. 2.因为火狐等使用的人较少,且更新较快,所以不考虑支持与否,因为一般都支持 3.主要就是汇总 ...
- pypinyin, jieba分词与Gensim
一 . pypinyin from pypinyin import lazy_pinyin, TONE, TONE2, TONE3 word = '孙悟空' print(lazy_pinyin(wor ...
- Vue.js——vue-resource
vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应. vue-resource使用 引入 npm install vue-reso ...
- bzoj 3282: Tree (Link Cut Tree)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3282 题面: 3282: Tree Time Limit: 30 Sec Memory L ...
- Motorola和Intel格式报文解析的区别
结论:无论用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别. 先看下Vector的CANoe中dbc编辑器是如何呈现报文的: 图1 CAN报文中byte与bit顺序 从图 ...
- 熵值法 [异质指标同质化]中-Matlab 数据归一化预处理 mapminmax函数
一.mapminmax Process matrices by mapping row minimum and maximum values to [-1 1] 意思是将矩阵的每一行处理成[-1,1] ...
- MySQL表与表之间的关系
表与表之间的关系 表1 foreign key 表2 则表1的多条记录对应表2的一条记录,即多对一 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以 ...