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

  • 天猫精灵方糖怎么连接蓝牙(天猫精灵方糖怎么连接网络)

    天猫精灵方糖怎么连接蓝牙(天猫精灵方糖怎么连接网络)

  • 高德导航怎么都换成自己声音(高德导航怎么都换成自己声音OPPO)

    高德导航怎么都换成自己声音(高德导航怎么都换成自己声音OPPO)

  • iqooz1x屏幕是什么材质

    iqooz1x屏幕是什么材质

  • 双十一最迟发货时间(2020淘宝双十一最迟发货时间)

    双十一最迟发货时间(2020淘宝双十一最迟发货时间)

  • mla al10什么型号(mla-al10什么型号)

    mla al10什么型号(mla-al10什么型号)

  • 小米蓝牙耳机连不上手机怎么回事(小米蓝牙耳机连接了没有声音)

    小米蓝牙耳机连不上手机怎么回事(小米蓝牙耳机连接了没有声音)

  • 机顶盒无信号怎么办(机顶盒无信号怎么解决)

    机顶盒无信号怎么办(机顶盒无信号怎么解决)

  • 三十分钟视频如何发送(三十分钟视频如何发送抖音)

    三十分钟视频如何发送(三十分钟视频如何发送抖音)

  • qq修改了密码还是密码错误(qq修改了密码还是提示冻结)

    qq修改了密码还是密码错误(qq修改了密码还是提示冻结)

  • 笔记本小键盘0键打不出来(笔记本小键盘0变成右键)

    笔记本小键盘0键打不出来(笔记本小键盘0变成右键)

  • 苹果11耐摔吗(苹果11耐摔还是12耐摔)

    苹果11耐摔吗(苹果11耐摔还是12耐摔)

  • 淘宝没有延长收货按钮怎么办(淘宝没有延长收货选项)

    淘宝没有延长收货按钮怎么办(淘宝没有延长收货选项)

  • 格式工厂怎么下载到电脑上(格式工厂怎么下载b站视频)

    格式工厂怎么下载到电脑上(格式工厂怎么下载b站视频)

  • 苹果性能小钢炮是什么手机(苹果性能小钢炮6sp)

    苹果性能小钢炮是什么手机(苹果性能小钢炮6sp)

  • iphone怎么没有声音了(iphone怎么没有声音了怎么办)

    iphone怎么没有声音了(iphone怎么没有声音了怎么办)

  • vivo怎么显示桌面歌词(vivo怎么显示桌面时间日期)

    vivo怎么显示桌面歌词(vivo怎么显示桌面时间日期)

  • 信号hd是什么意思(信号hd是什么意思,怎么关闭)

    信号hd是什么意思(信号hd是什么意思,怎么关闭)

  • 喵喵机打印不出来怎么办(喵喵机打印不出纸)

    喵喵机打印不出来怎么办(喵喵机打印不出纸)

  • wlan直连什么意思(什么事wlan直连)

    wlan直连什么意思(什么事wlan直连)

  • vivox9splus怎么恢双清(vivox9plusl怎么恢复出厂设置)

    vivox9splus怎么恢双清(vivox9plusl怎么恢复出厂设置)

  • 华为p30收音机在哪里(华为p30 收音机)

    华为p30收音机在哪里(华为p30 收音机)

  • 苹果xsmax快充支持到多少w(苹果xsmax快充功率)

    苹果xsmax快充支持到多少w(苹果xsmax快充功率)

  • vue可以制作长视频吗(vue怎么做长视频)

    vue可以制作长视频吗(vue怎么做长视频)

  • 华为nova3怎么设置来电视频(华为nova3怎么设置侧边栏)

    华为nova3怎么设置来电视频(华为nova3怎么设置侧边栏)

  • iphone连车usb没声音(iphoneusb连接车没声音)

    iphone连车usb没声音(iphoneusb连接车没声音)

  • ChatGPT强化学习大杀器——近端策略优化(PPO)

    ChatGPT强化学习大杀器——近端策略优化(PPO)

  • 公司出售房产缴纳税金如何凭证
  • 应交所得税的计税依据
  • 借款发生的利息费用
  • 怎样注册投资有限公司
  • 企业境外投资管理办法
  • 发票能减多少税
  • 银行提供资金
  • 会计科目累计摊销是什么意思
  • 专项附加扣除项目的6项具体规定有哪些
  • 存货计提跌价准备什么意思
  • 建筑施工企业销售费用包括哪些
  • 收到别人的承兑怎么入账
  • 多交税款抵税会计分录
  • 工程款开票后增值税怎么做分录?
  • 其他业务收入的核算内容
  • 股东利润分配怎么交税
  • 以前年度的所得税怎么入账
  • 生产过程中产生的废料怎么管理
  • 房产税法律制度的重要内容
  • 小规模820如何填写申报表?
  • 总资产报酬率可以用净利润计算吗
  • 转让商业承兑汇票显示银行拒绝交易
  • 公司的公益性捐款合法吗
  • 赎回公司发行的债券怎么做账?
  • 6月 全新windows
  • 合伙企业合伙人工资的账务处理
  • win11如何关闭开机自启动项
  • 产负债表的负债项目,显示了企业所负担债务的
  • 企业若需要给客户交税
  • 个人所得税账务处理分录怎么做
  • php数组函数,选班长
  • echart怎么用
  • php和mysql的联合使用
  • 预付款不退如何投诉
  • 应付账款挂账会计分录
  • 计提税金及附加怎么算
  • 详解php实现执行任务
  • 除甲醛的净化器哪个品牌做得最好
  • 公司缴纳残保金怎么做账
  • 如何查询企业财务负责人是否变更了
  • linux系统操作教程
  • 购入固定资产的进项税额可以抵扣吗
  • 盈余公积金的账务处理
  • 企业所得税能否票据入账
  • 个体工商户开普通发票需要交税吗
  • 营业外支出科目代码
  • 长期股权投资追溯调整有几种情况
  • mysql的左右连接
  • 怎么计算土地增值税收入
  • 土地使用权如何取得
  • 研发费用加计扣除是什么意思啊
  • 转账错误退款说明
  • 应付职工薪酬都要报个税吗
  • 销售货物多收款怎么处理
  • 某劳务派遣公司与某传媒公司签订
  • 在网上如何申领发票
  • 非营利医疗机构印花税减免政策文件
  • 可转换债券转换时的会计处理
  • sql中cursor是什么意思
  • 清除sql表内容
  • mysql随机选择
  • ubuntu更新软件
  • 超小平板电脑
  • ubuntu 18.04怎么用
  • speedmgr.exe - speedmgr是什么进程 有什么用
  • win7系统可移动的文件
  • 在linux中使用什么命令可以给命令起别名
  • win10qq经常卡
  • backtracker
  • unity总结
  • shell脚本实际运用
  • 安卓开源项目叫什么
  • python中lxml模块
  • python tonny
  • js中构造函数怎么写
  • javascript基础
  • 安徽省低保查询入口官网
  • 高新技术企业认定
  • blueerdos和鄂尔多斯区别
  • 先进单位表彰发言稿
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设