当前位置:
首页 >
day21 计算器作业
发布时间:2025/4/16
36
豆豆
生活随笔
收集整理的这篇文章主要介绍了
day21 计算器作业
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1 import re
2
3 express = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
4 # 去掉所有的空格
5 # 找括号,先找括号里面没有括号的最里面的括号
6 # 先算括号里的乘除,再算括号里的加减
7
8 # 计算表达式
9 def dealwith(express):
10 if "+-" in express:express.replace("+-","-")
11 if "+-" in express:express.replace("--","+")
12 return express
13
14 def cal_exp_son(exp_son):
15 # 只用来计算原子型表达式,最小的表达式
16 if "/" in exp_son:
17 a,b = exp_son.split("/")
18 return str(float(a)/float(b))
19 if "*" in exp_son:
20 a,b = exp_son.split("*")
21 return str(float(a) * float(b))
22
23 def cal_express_no_bracket(exp):
24 # 计算没有括号的表达式
25 # exp 为未经过处理的最内层的带括号的表达式
26 exp = exp.strip("()")
27 print(exp)
28 # 先乘除,后加减
29 while True:
30 ret = re.search("\d+\.?\d*[*/]-?\d+\.?\d*",exp)
31 if ret :
32 exp_son = ret.group()
33 ret = cal_exp_son(exp_son)
34 exp = exp.replace(exp_son,ret)
35
36 # 将空格去除
37 new_express = re.sub(" ","",express)
38
39 #提取括号里面没有其他括号的的表达式
40 while True:
41 ret = re.search("\([^()]+\)",new_express)
42 if ret :
43 express_no_bracket = ret.group()
44 ret = cal_express_no_bracket(express_no_bracket)
45 new_express= new_express.replace(express_no_bracket,ret)
46 print(new_express)
47 new_express = dealwith(new_express)
48 print(new_express)
49 else:
50 print("表达式已经没有括号了",new_express)
51 break
转载于:https://www.cnblogs.com/shijieli/p/9714600.html
总结
以上是生活随笔为你收集整理的day21 计算器作业的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 可能是全网把 ZooKeeper 概念讲
- 下一篇: HDU-6290_奢侈的旅行(Dijst