《团队-科学计算器-项目进度》
团队-科学计算器-项目进度
进度:
import
re
def
md(l,x):
a
=
l.index(x)
if
x
=
=
'*'
and
l[a
+
1
] !
=
'-'
:
k
=
float
(l[a
-
1
])
*
float
(l[a
+
1
])
elif
x
=
=
'/'
and
l[a
+
1
] !
=
'-'
:
k
=
float
(l[a
-
1
])
/
float
(l[a
+
1
])
elif
x
=
=
'*'
and
l[a
+
1
]
=
=
'-'
:
k
=
-
(
float
(l[a
-
1
])
*
float
(l[a
+
2
]))
elif
x
=
=
'/'
and
l[a
+
1
]
=
=
'-'
:
k
=
-
(
float
(l[a
-
1
])
/
float
(l[a
+
2
]))
del
l[a
-
1
], l[a
-
1
], l[a
-
1
]
l.insert(a
-
1
,
str
(k))
return
l
def
fun(s):
l
=
re.findall(
'([\d\.]+|/|-|\+|\*)'
,s)
sum
=
0
while
1
:
if
'*'
in
l
and
'/'
not
in
l:
md(l,
'*'
)
elif
'*'
not
in
l
and
'/'
in
l:
md(l,
'/'
)
elif
'*'
in
l
and
'/'
in
l:
a
=
l.index(
'*'
)
b
=
l.index(
'/'
)
if
a < b:
md(l,
'*'
)
else
:
md(l,
'/'
)
else
:
if
l[
0
]
=
=
'-'
:
l[
0
]
=
l[
0
]
+
l[
1
]
del
l[
1
]
sum
+
=
float
(l[
0
])
for
i
in
range
(
1
,
len
(l),
2
):
if
l[i]
=
=
'+'
and
l[i
+
1
] !
=
'-'
:
sum
+
=
float
(l[i
+
1
])
elif
l[i]
=
=
'+'
and
l[i
+
1
]
=
=
'-'
:
sum
-
=
float
(l[i
+
2
])
elif
l[i]
=
=
'-'
and
l[i
+
1
]
=
=
'-'
:
sum
+
=
float
(l[i
+
2
])
elif
l[i]
=
=
'-'
and
l[i
+
1
] !
=
'-'
:
sum
-
=
float
(l[i
+
1
])
break
return
sum
def
calculate(expression):
ex
=
[]
ans
=
0
if
'('
not
in
expression:
ans
=
fun(expression)
return
ans
for
i
in
range
(
len
(expression)):
if
expression[i]
=
=
'('
:
ex.append(i)
#ex=[6,7]
elif
expression[i]
=
=
')'
:
#14
temp
=
0
sub
=
expression[ex[
len
(ex)
-
1
]
+
1
:i]
temp
=
fun(sub)
expression
=
expression[
0
:ex[
len
(ex)
-
1
]]
+
str
(temp)
+
expression[i
+
1
:
len
(expression)
+
1
]
ex.pop()
return
calculate(expression)
s
=
'1 - 2 * ( (60-30 +(-40/5+3) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
print
(
1
-
2
*
( (
60
-
30
+
(
-
40
/
5
+
3
)
*
(
9
-
2
*
5
/
3
+
7
/
3
*
99
/
4
*
2998
+
10
*
568
/
14
))
-
(
-
4
*
3
)
/
(
16
-
3
*
2
) ))
#1735397.4095238098
s3
=
'3*(4+50)-((100+40)*5/2-3*2*2/4+9)*(((3+4)-4)-4)'
#518.0
print
(
3
*
(
4
+
50
)
-
((
100
+
40
)
*
5
/
2
-
3
*
2
*
2
/
4
+
9
)
*
(((
3
+
4
)
-
4
)
-
4
))
print
(calculate(s))
#1735397.4095238098
print
(calculate(s3))
在实现一个简单的计算器中:我们要注意的问题有很多。
一、加减乘除在什么时候开始计算
二、不带括号的计算
计算乘除,在计算加减,计算一个最小计算单元后,再将结果放回列表中不断循环,直到算出整个不带括号的表达式
代码写到这里主要的功能实现了,但是上面的代码还有一个小问题,那就是如果我们的表达式如果是这样的 7*((1-4)-4) 我们按照程序流程执行的话执行一次fun的话,表达式变成这样 7*(-3-4),在执行一次的话就变成 7*-7,这样的话,我们在执行上面的fun函数就会出现问题,
1:定义最小的乘除运算单元,l是列表,x代表*或/:
2:首先获取乘除运算符的位置
3:如果是*则执行乘法运算
4:获取乘法运算的结果,比如k=3*2
5:删除掉列表里刚做运算的三个元素,比如,3 * 2
6:将刚计算的结果插入到列表中然后执行下一次计算
三、带有括号的计算
计算最里面一个括号里的表达式,调用fun函数计算出其值,将其结果代替其括号,然后不停的递归调用直到获取最后的结果
1:存储'('出现的位置
2:#保存结果
3:#如果括号都处理完成了,直接调用fun函数返回结果
转载于:https://www.cnblogs.com/Brian-hui/p/7663353.html
《团队-科学计算器-项目进度》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- SpringBoot实现过滤器、拦截器与切片
- 智能音箱自己把自己黑了:随机购物拨号,自主开灯关门,平均成功率达88%
- POJ1742 Coins(DP)
- spring boot 配置动态刷新
- 屏蔽tomcat服务器报错信息,tomcat 屏蔽网络爬虫
- Vue基本操作及运行截图总结
- docker容器部署的应用启动日志在哪里看_在SAP云平台上部署和运行Docker应用
- java软件开发毕业论文_基于java软件毕业论文.doc
- 你想在网易云音乐中播放 QQ 音乐中下载的歌曲吗?用上它后助你秒实现!
- visual foxpro v6.0官方版
- java十大排序算法
- 开源项目(VC++,MFC)
- iguana::json/xml 序列化框架
- Python 小型项目大全 36~40
- WSL与idea集成攻略
- 第一道题目:一个美国人在菜市场上做生意。第一次,8美元买了一只鸡,9美元卖掉了;第二次,10美元买了同样的一只鸡,11美元又卖掉了。
- 极速办公如何在Excel中进行条件计数
- YOLO v5 引入解耦头部
- Oracle 备份失败报错ORA-04063: view SYS.KU_RADM_FPTM_VIEW has errors
- 哔哩哔哩php开发工作怎么样,[上海] [哔哩哔哩]-努力寻求[PHP /C++/Andro/iOS/前端开发工程师]-会是你吗?...
热门文章
- 简单介绍一下vue2.0
- React Native常用第三方汇总
- 一步一步教你安装Nginx+PHP+Mysql
- C#网络编程之 UDP编程
- 数据结构笔记(三十三)--二叉排序树的插入与生成
- 使用ORB_SLAM2的方式进行特征检测和提取
- unix linux 安装mono,关于mono在linux连接unixodbc的问题
- OpenCV图像处理(17)—— 各种二值化对比
- cmd做个定时弹窗_windows如何设置定时关机?
- python百度语音实时识别成文字_python 上传百度语音识别+文字返回结果