Python解析 算数表达式求值 栈的使用
使用Python实现一种算数表达式求值的算法,模拟这种使用栈的方式,这是由E.W.Dijkstra在20世纪60年代发明的一种非常简单的算法。代码模拟仅仅表现一种编程思想,代码的逻辑并不完全:
if __name__ == "__main__":
cal_str = input("请输入算数表达式(e.g.(((1+2)*(3+5))+2), 只适合简单的算数表达式):")
num_stack = []
symbol_stack = []
for chr in cal_str:
#print(chr)
if chr == "(":
continue
elif chr == "" or chr == "\t" or chr == "\n":
continue
elif chr == "+":
symbol_stack.append(chr)
elif chr == "-":
symbol_stack.append(chr)
elif chr == "*":
symbol_stack.append(chr)
elif chr == "/":
symbol_stack.append(chr)
elif chr == "sqrt":
symbol_stack.append(chr)
elif chr == ")":
total_num = num_stack.pop()
now_symbol = symbol_stack.pop()
if now_symbol == "+":
total_num += num_stack.pop()
if now_symbol == "-":
total_num -= num_stack.pop()
if now_symbol == "*":
total_num *= num_stack.pop()
if now_symbol == "/":
total_num /= num_stack.pop()
num_stack.append(total_num)
else:
num_stack.append(int(chr))
print(num_stack.pop())
Python解析 算数表达式求值 栈的使用的更多相关文章
- 表达式求值 (栈) 用C++实现
#include <cstdio> #include <cstdlib> #include <cmath> #include <stack> #incl ...
- 第四届河南省ACM 表达式求值 栈
表达式求值 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 7 [提交][状态][讨论版] 题目描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简 ...
- 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
秋实大哥搞算数 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1074 Des ...
- 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值
一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚, ...
- 利用栈实现算术表达式求值(Java语言描述)
利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...
- Java描述表达式求值的两种解法:双栈结构和二叉树
Java描述表达式求值的两种解法:双栈结构和二叉树 原题大意:表达式求值 求一个非负整数四则混合运算且含嵌套括号表达式的值.如: # 输入: 1+2*(6/2)-4 # 输出: 3.0 数据保证: 保 ...
- 【python】Leetcode每日一题-逆波兰表达式求值
[python]Leetcode每日一题-逆波兰表达式求值 [题目描述] 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说 ...
- 数据结构--栈的应用(表达式求值 nyoj 35)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=35 题目: 表达式求值 时间限制:3000 ms | 内存限制:65535 KB描述 AC ...
- 【NYOJ-35】表达式求值——简单栈练习
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min ...
随机推荐
- JS的ES6的async
1.async概念: 真在意义上解决异步回调函数的问题(由于promise的then方法中还是使用回调函数,而async中await并没有使用回调函数真正意义上解决回调函数),同步流程表达异步操作. ...
- ps制作马赛克图片
- ES5新增的数组方法
ES5新增:(IE9级以上支持)1.forEach():遍历数组,无返回值,不改变原数组.2.map():遍历数组,返回一个新数组,不改变原数组.3.filter():过滤掉数组中不满足条件的值,返回 ...
- A♂G&C012
A♂G&C012 A AtCoder Group Contest 从大到小sort后输出\(a_2+a_4+a_6+\ldots a_{2n}\) 好♂啊,只会背结论/kk B Splatte ...
- 洛谷P1084 运输计划
题目 题目要求使一条边边权为0时,m条路径的长度最大值的最小值. 考虑二分此长度最大值 首先需要用lca求出树上两点间的路径长度.然后取所有比mid大的路径的交集,判断有哪些边在这些路径上都有出现,然 ...
- js 判断一个数是否在数组中
,,,,,,,); ; ; i < arr.length; i++) { ){ console.log(i); flag=; break; } } ){ console.log("66 ...
- Matlab Script to pre-process UAV123 tracking dataset
Matlab Script to pre-process UAV123 tracking dataset 2019-11-08 09:43:11 Official project page: http ...
- xshell如何导入.xsh 文件
xshell 不能导入 xsh 文件 导入功能 只能导入 *.xts, *.csv, *.tsv 文件,不能直接导入 .xsh 其实 xsh文件不需要导入,直接拷贝进去就可以了(.xsh 本来就是 x ...
- Transaction 那点事儿
Transaction 那点事儿 https://my.oschina.net/huangyong/blog/160012
- JAVA中String空对象的字符串拼接
今天使用JSONObject中get一个不存在的对线,最后拼接成sql语句插入数据库时,最后数据库中的值为字符串'null',而不是空对象. 追踪许久才发现自己的java白学了. java strin ...