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.要 ...
随机推荐
- css基本介绍
目录 CSS初识 构造规则 注意 样式表的定义和使用 行内式(内联样式) 内部样式表 外部样式表(外链式) 选择器 标签选择器(元素选择器) 类选择器 id选择器 通配符选择器 伪类选择器 链接伪类选 ...
- 优先队列Priority Queue和堆Heap
对COMP20003中的Priority queue部分进行总结.图片来自于COMP20003 queue队列,顾名思义特点先进先出 priority queue优先队列,出来的顺序按照优先级prio ...
- php扩展之Yar
Yar 是一个轻量级, 高效的RPC框架, 它提供了一种简单方法来让PHP项目之间可以互相远程调用对方的本地方法. 并且Yar也提供了并行调用的能力. 可以支持同时调用多个远程服务的方法. 情况: 有 ...
- WEB工具类
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; ...
- Python------Mongodb操作
Python3要操作Mongodb需要下载pymongo,Linux下获取pymongo的方法也比较简单,控制台输入命令:sudo pip3 install pymongo 即可. Pymongo的文 ...
- monkeyrunner简介
monkeyrunner简介 MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Py ...
- python 所有常用模块汇总
time:时间 时间戳(timestamp):time.time() 延迟线程的运行:time.sleep(secs) (指定时间戳下的)当前时区时间:time.localtime([secs]) ( ...
- iOS presentViewController 方法引起的问题
有个需求,在项目中随时使用 presentViewController来显示一个界面,比如弹窗提示或者人脸解锁,都是在任何情况都可能出现的. 在presentViewController 调用前,已经 ...
- log4j2日志模板
log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <!--设置log4j2的自身log级别为 ...
- 【Linux】配置SSH Key到GitHub/GitLab
Linux配置SSH Key到GitHub/GitLab 准备工作 首先检查下本机是否已经安装了SSH,在终端输入ssh即可: 如果没有安装进行yum安装 # yum -y install opens ...