位置: IT常识 - 正文

用Python举例实现逆波兰表达式(用python写)

编辑:rootadmin

推荐整理分享用Python举例实现逆波兰表达式(用python写),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python的例子,利用python进行,利用python,python运用,利用python进行,利用python进行,python如何用,python如何用,内容如对您有帮助,希望把文章链接给更多的朋友!

用Python举例实现逆波兰表达式(用python写)

逆波兰表达式是编译原理中的一种基本表达式,利用Python语言也可以实现逆波兰表达式的输出,这里举例实践说明:

什么是逆波兰表达式?

逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。

举例实现:

#-*-coding:utf-8-*-symbol_priority={}symbol_priority[0]=['#']symbol_priority[1]=['(']symbol_priority[2]=['+','-']symbol_priority[3]=['*','/']symbol_priority[4]=[')']defcomparePriority(symbol,RPN_stack,symbol_stack):'''Compareprioritybetweentwosymbols'''globalsymbol_priorityiflen(symbol_stack)>0:symbol_pop=symbol_stack.pop()else:returnforlistinsymbol_priority.values():if(symbolinlist)and(symbol_popinlist):'''samepriority'''symbol_stack.append(symbol_pop)symbol_stack.append(symbol)returnelifsymbolinlist:'''symbolissmaller'''RPN_stack.append(symbol_pop)#recusioncallcomparePriority(symbol,RPN_stack,symbol_stack)returnelifsymbol_popinlist:'''symbolisbigger'''symbol_stack.append(symbol_pop)symbol_stack.append(symbol)returnelse:continuesymbol_stack.append(symbol_pop)returndefscanEveryone(input_string,RPN_stack,symbol_stack):forchininput_string:ifch.isdigit():RPN_stack.append(ch)else:iflen(symbol_stack)>0:ifch=='(':symbol_stack.append(ch)elifch==')':whileTrue:symbol_pop=symbol_stack.pop()ifsymbol_pop=='(':breakelse:RPN_stack.append(symbol_pop)else:comparePriority(ch,RPN_stack,symbol_stack)else:symbol_stack.append(ch)defscanInput(RPN_stack,symbol_stack):input_string=raw_input()input_string+='#'scanEveryone(input_string,RPN_stack,symbol_stack)defcalRPN(RPN_stack):value_stack=[]RPN_stack.append('#')forvalueinRPN_stack:ifvalue=='#':returnvalue_stack.pop()breakifvalue.isdigit():value_stack.append(value)else:right_value=value_stack.pop()left_value=value_stack.pop()cal_string=left_value+value+right_valuevalue_stack.append(str(eval(cal_string)))defmain():RPN_stack=[]symbol_stack=[]scanInput(RPN_stack,symbol_stack)printcalRPN(RPN_stack)if__name__=='__main__':main()#-*-coding:utf-8-*-symbol_priority={}symbol_priority[0]=['#']symbol_priority[1]=['(']symbol_priority[2]=['+','-']symbol_priority[3]=['*','/']symbol_priority[4]=[')']defcomparePriority(symbol,RPN_stack,symbol_stack):'''Compareprioritybetweentwosymbols'''globalsymbol_priorityiflen(symbol_stack)>0:symbol_pop=symbol_stack.pop()else:returnforlistinsymbol_priority.values():if(symbolinlist)and(symbol_popinlist):'''samepriority'''symbol_stack.append(symbol_pop)symbol_stack.append(symbol)returnelifsymbolinlist:'''symbolissmaller'''RPN_stack.append(symbol_pop)#recusioncallcomparePriority(symbol,RPN_stack,symbol_stack)returnelifsymbol_popinlist:'''symbolisbigger'''symbol_stack.append(symbol_pop)symbol_stack.append(symbol)returnelse:continuesymbol_stack.append(symbol_pop)returndefscanEveryone(input_string,RPN_stack,symbol_stack):forchininput_string:ifch.isdigit():RPN_stack.append(ch)else:iflen(symbol_stack)>0:ifch=='(':symbol_stack.append(ch)elifch==')':whileTrue:symbol_pop=symbol_stack.pop()ifsymbol_pop=='(':breakelse:RPN_stack.append(symbol_pop)else:comparePriority(ch,RPN_stack,symbol_stack)else:symbol_stack.append(ch)defscanInput(RPN_stack,symbol_stack):input_string=raw_input()input_string+='#'scanEveryone(input_string,RPN_stack,symbol_stack)defcalRPN(RPN_stack):value_stack=[]RPN_stack.append('#')forvalueinRPN_stack:ifvalue=='#':returnvalue_stack.pop()breakifvalue.isdigit():value_stack.append(value)else:right_value=value_stack.pop()left_value=value_stack.pop()cal_string=left_value+value+right_valuevalue_stack.append(str(eval(cal_string)))defmain():RPN_stack=[]symbol_stack=[]scanInput(RPN_stack,symbol_stack)printcalRPN(RPN_stack)if__name__=='__main__':main()
本文链接地址:https://www.jiuchutong.com/zhishi/304618.html 转载请保留说明!

上一篇:Uncaught SyntaxError: Unexpected token '<' (at 报错

下一篇:pycharm操作redis(pycharm操作界面)

  • 什么内容更吸引人买买买?看看文案里藏着这些规律(什么内容更吸引人用英语怎么说)

    什么内容更吸引人买买买?看看文案里藏着这些规律(什么内容更吸引人用英语怎么说)

  • 荣耀平板v7pro有无线充电吗(荣耀v7pro平板)

    荣耀平板v7pro有无线充电吗(荣耀v7pro平板)

  • 抖音删作品能保留赞吗(删除了抖音作品会留下痕迹吗)

    抖音删作品能保留赞吗(删除了抖音作品会留下痕迹吗)

  • 美团删除的订单怎么找回(美团删除的订单怎么找回记录)

    美团删除的订单怎么找回(美团删除的订单怎么找回记录)

  • 华为手机的个人热点怎么关闭(华为手机的个人热点是什么功能)

    华为手机的个人热点怎么关闭(华为手机的个人热点是什么功能)

  • 2.3ghz是什么意思(2.3ghz是多少hz)

    2.3ghz是什么意思(2.3ghz是多少hz)

  • 因硕智能锁是品牌吗(因硕智能锁品牌简介)

    因硕智能锁是品牌吗(因硕智能锁品牌简介)

  • 荣耀9x系统更新后变卡了(荣耀9x系统更新包怎么删除)

    荣耀9x系统更新后变卡了(荣耀9x系统更新包怎么删除)

  • 苹果手机半夜自动拨号(苹果手机半夜自动发信息)

    苹果手机半夜自动拨号(苹果手机半夜自动发信息)

  • 红米k30pro指纹解锁在哪里(红米k30pro指纹解锁没有了)

    红米k30pro指纹解锁在哪里(红米k30pro指纹解锁没有了)

  • 微信群待办是干什么的(微信群待办有什么作用)

    微信群待办是干什么的(微信群待办有什么作用)

  • 多媒体数据压缩编码方法可分为哪两大类(多媒体数据压缩技术一般分为)

    多媒体数据压缩编码方法可分为哪两大类(多媒体数据压缩技术一般分为)

  • 华硕主板cpu风扇报错(华硕主板cpu风扇报错要按f1)

    华硕主板cpu风扇报错(华硕主板cpu风扇报错要按f1)

  • ios有没有自动点击器(ios自动点击屏幕的软件)

    ios有没有自动点击器(ios自动点击屏幕的软件)

  • 手机整夜充电有伤害吗(手机整夜充电有影响吗)

    手机整夜充电有伤害吗(手机整夜充电有影响吗)

  • 微信名改了怎么还显示以前的(微信名改了怎么找到这个人)

    微信名改了怎么还显示以前的(微信名改了怎么找到这个人)

  • 手机发出滋滋的声音怎么办(手机发出滋滋的声音死机)

    手机发出滋滋的声音怎么办(手机发出滋滋的声音死机)

  • 苹果手机信号时有时无怎么回事(苹果手机信号时不时无服务)

    苹果手机信号时有时无怎么回事(苹果手机信号时不时无服务)

  • mac地址能定位吗(根据mac地址定位)

    mac地址能定位吗(根据mac地址定位)

  • 为什么数字输入进excel里面就会变成000(为什么数字输入进excel里面就会变成日期)

    为什么数字输入进excel里面就会变成000(为什么数字输入进excel里面就会变成日期)

  • 手机扣扣如何恢复好友(手机上扣扣怎么恢复好友)

    手机扣扣如何恢复好友(手机上扣扣怎么恢复好友)

  • x27的升降摄像头怎么出来(x27升降摄像头有吱吱的声音吗)

    x27的升降摄像头怎么出来(x27升降摄像头有吱吱的声音吗)

  • tcl怎么看电视频道

    tcl怎么看电视频道

  • ios13适用于那些手机(ios13支持什么机型)

    ios13适用于那些手机(ios13支持什么机型)

  • 手机版qq音乐怎么剪歌(手机版QQ音乐怎么发布MV)

    手机版qq音乐怎么剪歌(手机版QQ音乐怎么发布MV)

  • 5g手机和4g手机区别(5g手机和4g手机有什么区别)

    5g手机和4g手机区别(5g手机和4g手机有什么区别)

  • React 框架(react框架和vue哪个用的人多)

    React 框架(react框架和vue哪个用的人多)

  • mysql元数据锁是什么(数据库 元数据)

    mysql元数据锁是什么(数据库 元数据)

  • 出口退税无纸化备案怎么弄
  • 中国税务精神是谁提出的
  • 利润10万企业所得税多少
  • 研发辅助账科目设置
  • 股东借款怎么转为利润分配
  • 缴纳的增值税比账面的少怎么做账
  • 广告发布费属于什么征税项目
  • 企业商品收入确认的依据
  • 办理外经证后缴税怎么交
  • 增值税税金不足1元未缴纳账务处理
  • 税务自查补缴税款算滞纳金么
  • 拿租金抵押金如何做账?
  • 商业保险可以税前全额扣除吗?
  • 产品检测费用计入什么科目
  • 建筑材料增值税税率
  • 小企业 企业所得税
  • 应交税金负数如何调整
  • 合伙企业年度汇缴申报
  • 4S店装修改造费帐务处理?
  • 公户转私户的钱怎么退回来
  • 系统安装的步骤
  • 收入成本配比原则
  • 计算机系统结构第三版课后答案
  • 企业职工工伤赔偿标准
  • 2014年最佳阵容
  • 产品销售核算会计分录
  • 怎么确认旧城改造完成
  • laravel快速入门
  • 没签订采购合同怎么办
  • vue中v-model
  • php zmq
  • 投资收益影响营业利润和利润总额吗
  • 用友自动生成凭证怎么操作
  • 基于深度学习的车型识别系统(Python+清新界面+数据集)
  • 朝夕教育怎么样
  • 微擎框架是开源的吗
  • 数据库 元数据
  • 对外捐赠会计分录怎么写
  • 只有发票没有银行怎么办
  • 代垫费用开票明细怎么写
  • 董事费收入
  • 财务报表的作用包括?
  • 制造费用的作用
  • 出口资质证书
  • PostgreSQL教程(十五):系统表详解
  • 往来款和货款
  • 主营业务成本包括哪些
  • 销售货款是什么
  • 固定资产净残值率
  • 售后服务期多久
  • 转让无形资产使用权税率
  • 用友u8怎样查询上个月凭证
  • 企业计提增值税怎么写
  • 一般纳税人主表中的25是怎么来的
  • 应付职工薪酬如何进行会计处理
  • 解除职工劳动关系补偿
  • 纳税筹划有哪些特点以及原则?
  • 怎么样建账做账
  • mysql处理
  • linux下mysql的root密码忘记的解决方法
  • win10 怎么设置
  • centos named
  • xp系统无法预览图片
  • 利用命令查看虚拟机的信息
  • win8应用商店官网
  • bat ftp上传文件
  • java iterate()用法
  • linux的rz sz命令
  • 动作
  • linux查找功能
  • 获取nodejs命令行信息
  • jquery插件使用教程
  • 税务系统运维应急预案范文
  • 四川省地方税务局2017年1号公告
  • 江苏省全电发票开通流程
  • 公司账户注销了,是不是网银也注销了
  • 国税稽查局查账单凭个人流水能不能当做证据
  • 电子税务局帐号不知道怎么找
  • 铜川财务
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设