Python下基于栈和逆波兰算法实现四则运算
参考《大话数据结构》一书4.9节,Python下基于栈和逆波兰算法实现四则运算。
- 栈的实现使用顺序结构,即基于列表实现,参考本人博客Python实现顺序结构栈Sequence Stack
- 中缀转换后缀采用逆波兰算法,参考本人博客Python利用栈将中缀表达式转换为后缀表达式(四则运算)。
计算代码如下所示(transform函数见上述 2.Python利用栈将中缀表达式转换为后缀表达式(四则运算)):
def arithmetic(expression):signs = '+-*/'symbol = SeqStack(size=20)expression = expression.split(' ') # 将后缀表达式分隔为数字和符号for ch in expression:if ch not in signs:symbol.push(ch)else:b = symbol.pop() # 首先弹出的是符号右侧的数a = symbol.pop()c = eval(a + ch + b) # eval用于计算字符串中的表达式symbol.push(str(c))return symbol.pop()def main():infix = '1+((2+3)*4)-5'infix = '42+21*2-(5-3)*4/2'suffix = transform(infix)print(suffix)print(arithmetic(suffix))if __name__ == '__main__':main()
Python下基于栈和逆波兰算法实现四则运算相关推荐
- C语言栈实现逆波兰算法
逆波兰式也叫后缀表达式(将运算符写在操作数之后) 如:我们平时写a+b,这是中缀表达式,写成后缀表达式就是:ab+ 先说明一下里面用到的基础 1.atof() 把字符串指针转化为浮点数 2.getch ...
- java实现逆波兰算法,基于逆波兰算法实现计算器(Java控制台版)
前言 计算器是日常生活中很常见的工具之一,但并不意味着计算器的软件实现原理就很简单.不少初学的小伙伴在尝试开发计算器的功能时,受到算术表达式中运算符优先级和多层嵌套等问题的困扰.本文采用逆波兰算法来实 ...
- 逆波兰算法(后缀表达式)
逆波兰式 即我们平时所说的后缀表达式(将运算符写在操作数之后) 实现逆波兰式的算法,难度并不大,但为什么要将看似简单的中序表达式转换为复杂的逆波兰式?原因就在于这个简单是相对人类的思维结构来说的,对计 ...
- java实现逆波兰算法,【算法】逆波兰算法实现原理
逆波兰算法介绍 假定给定一个只 包含 加.减.乘.除,和括号的算术表达式,你怎么编写程序计算出其结果. 问题是:在表达式中,括号,以及括号的多层嵌套 的使用,运算符的优先级不同等因素,使得一个算术表达 ...
- java中缀表达式转后缀表达式(逆波兰算法)
四则运算是栈的重要应用之一 中缀表达式转后缀表达式(逆波兰算法)过程 从左到右遍历中缀表达式 数字直接输出为后缀表达式一部分 如果是符号,则判断与栈顶元素的优先级 高于栈顶元素优先级直接入栈 低于或等 ...
- 关于逆波兰算法进行公式单位的推导
关于逆波兰算法的链接如下逆波兰算法 原理:将一个长表达式转化为2个数字之间的运算. 需求:利用逆波兰算法,推导出一个字母长表达式的单位 import java.util.ArrayList; impo ...
- 数据结构:栈实现逆波兰计算器
栈实现逆波兰计算器 前言 上篇博文中已经介绍了栈实现中缀表达式计算器,中缀表达式形如 "1+((2+3)*4)-5" 对人比较容易计算,但对于计算机却是一件比较困难的事,而后缀表达 ...
- 栈应用-逆波兰表达式(CPP实现简单易懂图解)
栈应用-逆波兰表达式(后缀表达式) 逆波兰表达式定义: 在由运算符(operator)和操作数(operand)组成的表达式中不使用括号(parenthesis-free)即可表示带优先级的运算关系 ...
- 数据结构 - 栈 (逆波兰计算器)(栈的三种表达式)(前缀、中缀和后缀表达式,后缀也叫逆波兰表达式)(中缀表达式转后缀表达式实现步骤及完整代码)
栈的三种表达式:前缀.中缀和后缀表达式,后缀也叫逆波兰表达式 前缀(波兰表达式) 中缀(对人来讲很好理解,对于计算机来讲就方便了,一般会把中缀表达式转换成后缀表达式) 后缀(逆波兰表达式) 计算过程 ...
最新文章
- 桌面时钟代码_iOS 14 制作自己的桌面 Widget
- Windows Phone 7项目实战之记事本(二)
- python有道自动翻译_利用python写一个有道翻译的脚本
- 前端学习(2571):为什么使用vuex
- python 计算小于某个数_python 列表寻找满足某个条件的开始索引和结束索引、区间范围...
- python学习笔记(二十七)多线程与多进程
- WPF 弹框 并自动关闭
- QA:golang redis协议同时写入报错
- php下载安装教程,PHP下载安装教程
- 怎么让联想计算机升级,如何刷bios,教您联想电脑如何刷bios
- 学习Hibernate框架笔记-第1天
- 怎么看电脑的hdmi是输出还是输入_笔记本hdmi接口是输入还是输出
- Python脚本教程、问题与解决方案的文章汇总索引目录
- Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled
- Python pgm解析和格式转换
- 2030年,程序员工资还能达到现在的水平吗?
- js动态生成echarts图表,并生成图片保存到本地,自定义图片名。
- HDOJ--1000A + B Problem
- 使用qqbot,群发好友消息以及打广告
- 南京VI设计,企业VI设计,视觉VI识别系统塑造出独特的企业形象