位置: 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操作界面)

  • 苹果12可以更新15.1系统吗(苹果12可以更新17)

    苹果12可以更新15.1系统吗(苹果12可以更新17)

  • 拼多多我的好友在哪(拼多多我的好友在哪里删除)

    拼多多我的好友在哪(拼多多我的好友在哪里删除)

  • 骁龙660aie和660区别(骁龙660 aie)

    骁龙660aie和660区别(骁龙660 aie)

  • 苹果11桌面删除的软件怎么找回(苹果11桌面删除的图标怎么恢复)

    苹果11桌面删除的软件怎么找回(苹果11桌面删除的图标怎么恢复)

  • 微信打招呼频率过高怎么办(微信打招呼频率过高会封号吗)

    微信打招呼频率过高怎么办(微信打招呼频率过高会封号吗)

  • ipad可以下载ps软件吗(ipad可以下载photoshop)

    ipad可以下载ps软件吗(ipad可以下载photoshop)

  • word产品激活失败什么意思(word产品激活失败无法编辑)

    word产品激活失败什么意思(word产品激活失败无法编辑)

  • 苹果耳机airpods pro怎么充电(苹果耳机airpodspro使用技巧)

    苹果耳机airpods pro怎么充电(苹果耳机airpodspro使用技巧)

  • 铁路12306积分有什么用(铁路12306积分获得)

    铁路12306积分有什么用(铁路12306积分获得)

  • 京东锁定订单还能恢复吗(京东订单锁定了还会发到自己手里吗)

    京东锁定订单还能恢复吗(京东订单锁定了还会发到自己手里吗)

  • 手机一直亮着不灭怎么办(手机一直亮着不动怎么办)

    手机一直亮着不灭怎么办(手机一直亮着不动怎么办)

  • 手机来电有语音播报怎么关(手机来电听不到对方声音怎么回事)

    手机来电有语音播报怎么关(手机来电听不到对方声音怎么回事)

  • 苹果手机11pro是双卡双待吗(苹果手机11pro是双卡吗)

    苹果手机11pro是双卡双待吗(苹果手机11pro是双卡吗)

  • 探探为什么下载不了啦(下载探探为什么还需要花钱)

    探探为什么下载不了啦(下载探探为什么还需要花钱)

  • bo e8蓝牙耳机怎么连(bo蓝牙耳机e8使用教程)

    bo e8蓝牙耳机怎么连(bo蓝牙耳机e8使用教程)

  • arw格式怎么转成jpg(arw格式图片如何转化为jpg)

    arw格式怎么转成jpg(arw格式图片如何转化为jpg)

  • 快应用服务框架可以删除吗(如何禁用快应用服务框架)

    快应用服务框架可以删除吗(如何禁用快应用服务框架)

  • 笔记本插网线和连wifi有什么区别(笔记本插网线和wifi哪个快)

    笔记本插网线和连wifi有什么区别(笔记本插网线和wifi哪个快)

  • 芒果会员的二维码在哪(芒果会员二维码共享)

    芒果会员的二维码在哪(芒果会员二维码共享)

  • opporeno和renoz的区别(opporeno和opporenoz的区别)

    opporeno和renoz的区别(opporeno和opporenoz的区别)

  • 插上U盘电脑无法开机怎么回事(插上U盘电脑无法启动怎么回事)

    插上U盘电脑无法开机怎么回事(插上U盘电脑无法启动怎么回事)

  • 前端技术中的几种居中方式(前端的基本知识)

    前端技术中的几种居中方式(前端的基本知识)

  • Element UI 中国省市区级联选择器(elementui中文网)

    Element UI 中国省市区级联选择器(elementui中文网)

  • 企业持股分红
  • 一般纳税人登记证明
  • 稿费的个人所得税税率是多少
  • 机票抵扣怎么填申报表
  • 盈利幼儿园和非盈利幼儿园的政策
  • 连续三个月发烧怎么回事
  • 技术服务公司可以卖材料吗
  • 外地发票是什么意思
  • 红线范围外增加的工程量
  • 行政事业单位的会计核算可以采用权责发生制吗
  • 收到公众号申请的小额打款认证怎么入账?
  • 开具正数发票中如何体现扣款
  • 融资租赁承租人和出租人的会计处理
  • 超出发票使用范围
  • 递延所得税资产怎么计算
  • 会计如何做调整会计分录
  • 季初从业人数和季末从业人数怎么填
  • 企业车辆保险费要按什么交印花税的
  • 月末税金及附加税金的账务处理
  • 工资薪金所得税率表2023
  • 利息收入会计如何做账
  • 员工付款的手续费怎么算
  • 已经上传的红字怎么修改
  • windows10如何关闭杀毒软件
  • 企业支出的辞退补偿金
  • 事业单位服务收入怎么做账
  • 无形资产入账包括增值税吗
  • 企业转让房产所得税税率
  • win7纯净版本
  • php二维数组的遍历
  • 材料采购业务流程
  • 【深度学习】目标检测的性能评价指标,mAP_0.5,mAP_0.5,0.95,0.05
  • 技术研发费用包括哪些
  • 哪些税费可以抵扣
  • c语言中asin
  • 开票品名不一样有什么关系
  • dubbo dubbox
  • mongodb win7
  • 新建账簿的具体步骤
  • 直播属于什么行业门类
  • 钢筋增值税专票几个点
  • 公司捐赠给个人公司要交税吗
  • sqldbmon
  • access 替换
  • 经营结余和事业结余
  • 申报纳税的步骤
  • 公户里的钱可以随便转出嘛
  • 固定资产汽车折旧年限是多少年
  • 固定资产和无形资产折旧时间起始
  • 待认证转出
  • 加盟代理需要什么手续
  • 事业单位有奖励吗
  • 资产报废折旧
  • 法人往自己公司打款没用注明用途
  • 污水处理工程内容包括
  • 一般纳税人只交社保无发票往来需要做账吗
  • 无票销售纳税后怎么处理
  • 公司购药品入什么科目
  • 企业会计准则解释第16号
  • 公司财务人员的作用
  • Windows10安装包下载
  • mac安装win10键盘失灵
  • win8 怎么样
  • linux命令怎么执行
  • win10预览文件怎么显示内容
  • windows10禁用独立显卡
  • 基于javascript的毕业设计
  • vue父向子传方法
  • ssh执行远程命令 参数
  • awk统计文件大小
  • javascript的介绍
  • javascript设计的初衷和特点
  • 税务系统 网络发票
  • 无自然人登记信息是怎么回事
  • 企业购置房屋需要交哪些税费
  • 拆迁房抵税政策
  • 企业所得税的改革与完善
  • 政府收储土地需要缴纳什么税
  • 深圳沙井社保局在哪个位置
  • 企业并购重组的方式有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设