目录

  • 题目
  • 代码
  • AC截图

题目

代码

碎碎念:我用来复习栈的,刷了巨长时间,一直Runtine Error,编译直接就没有过。
好家伙,然后发现是数据给的不够严谨,左右两端有空格,使用strip()处理一下就好了。

# 栈结构
class Stack:def __init__(self,*args):self.items = [i for i in args]def __str__(self):return str(self.items)def push(self,item):self.items.append(item)def pop(self):return self.items.pop()def is_empty(self):return self.items == []def peek(self):return self.items[-1]# 返回最后一个元素def size(self):return len(self.items)def show(self):return self.itemsdef clear(self):self.items = []# 中缀表达式 => 后缀表达式
# LG P1175 表达式的转换def change_expression(s: str):dic = {"(": 0,"^": 3,"*": 2,"/": 2,"+": 1,"-": 1}stack = Stack()  # 存储符号res = []  # 放答案for i in s:# 操作符if i in ['+', '-', '*', '/', '^']:# 要先取出优先级更高的,或者相等的运算符while (not stack.is_empty() and dic[stack.peek()] >= dic[i]):res.append(stack.pop())stack.push(i)elif i == '(':stack.push(i)elif i == ')':top_token = stack.pop()while (top_token != '('):res.append(top_token)top_token = stack.pop()else:# 运算数res.append(i)# 剩余元素全部加入while not stack.is_empty():res.append(stack.pop())return " ".join(res)def calc_postfix_expression(s: str):# 计算后缀表达式stack = Stack()# start 方便输出temp = list(s)index = 0# end 方便输出for i in s:if i in "0123456789":# 运算数stack.push(int(i))else:# 运算符op2 = stack.pop()op1 = stack.pop()ans = do_math(i, op1, op2)stack.push(ans)# start 输出依次结果before = temp[0:index-2]before.append(str(ans))out = before + temp[index+1:]temp = outindex = index - 2print(" ".join(out))# end 输出结果index += 1return stack.pop()def do_math(op, op1, op2):if op == '+':return op1+op2elif op == '-':return op1-op2elif op == '*':return op1*op2elif op == '/':return op1//op2elif op == '^':return op1**op2if __name__ == '__main__':# 对于题目中的输入字符串一定要小心(如果比赛题目不严谨,会导致很多问题,最后strip()一下)expression = input().strip()res = change_expression(expression)# res = change_expression("(1+2)*3-4")print(res)  # 输出结果calc_postfix_expression(res.replace(" ", ""))# print(ans)

AC截图

【Python】洛谷 P1175_表达式的转换(逆波兰式、中缀表达式、后缀表达式、栈)相关推荐

  1. php逆波兰表达式,PHP实现逆波兰式 - 计算工资时用

    近期一个小项目需要用到公式运算, 所以就进行一些了解,以下内容均属于个人经验. 在PHP中实现公式表达式四则运算大概有两种方法: 1)使用系统函数eval 2)将表达式转换成逆波兰表达式进行计算. / ...

  2. 波兰式,逆波兰式,中缀表达式相互转换

    引入波兰式与逆波兰式: 一个式子,可以分成几个层面来看.比如1 + 2 * 3,我们看它是个算式,计算机看它,那就是个字符串,所以首先必须把它拆分成计算机可以操作的数据单元,就是Tokenize.比如 ...

  3. JavaScript实现逆波兰式

    中缀表达式就是我们平时见到的算数表达式:前缀表达式被称为波兰式:后缀表达式被称为逆波兰式 中缀表达式转换逆波兰式实现逻辑 创建运算符栈operator,结果栈result 中缀表达式从左到右出栈 当字 ...

  4. 逆波兰式求值 —Java

    首先我们了解一下什么叫逆波兰表达式? 逆波兰式,也叫后缀表达式(即运算符写在操作数之后) 例: 9 3 / 而我们日常所用的表达式都是中缀表达式,与逆波兰式是不一样的 上述的逆波兰式可能大家已经知道了 ...

  5. 【C++】栈的应用:逆波兰式的实现

    逆波兰表达式 一.定义 二.逆波兰式的意义 三.逆波兰式的实现 1.方法 (1)中缀表达式转化为后缀表达式 (2)由后缀表达式计算结果 2.代码实现 一.定义 逆波兰式,又称后缀表达式,指的是操作符在 ...

  6. php逆波兰表达式,PHP根据数字的字符表达式计算出结果(转换成逆波兰式再求解)[转]...

    这个简单的计算器采用的是逆波兰式来做的,仅支持加减乘除四种运算,纯粹个人练习记录一下,还望多多支持. 用法 require 'Calc.php'; $calc = new Calc('(1+9)/2' ...

  7. 使用栈解决的一类经典问题:表达式转换及求值;中缀表达式;前缀表达式,后缀表达式,中缀转前缀;中缀转后缀;后缀表达式求值;波兰式,逆波兰式

    文章目录 背景知识 表达式转换问题(考研经典) 一:手工转换 (1)中缀转前缀和中缀转后缀 (2)前缀转中缀和后缀转中缀 二:用栈实现表达式转换 (1)中缀转后缀 (2)中缀转前缀 表达式计算问题(使 ...

  8. 波兰式与逆波兰式的转换和表达式求值

    文章目录 一.前言 二.表达式 1.中缀表达式 1.1 定义 2.前缀表达式 2.1 定义 2.2 求值 3.后缀表达式 3.1 定义 3.2 求值 三.表达式转换 1.中缀表达式转换成后缀表达式 1 ...

  9. 中缀表达式转换成逆波兰式

    栈的应用:中缀表达式转换成逆波兰式 小白前来报道!懒癌患者的第一篇博客,实属不易,先为自己鼓个掌. 编写程序,将任意一个合法的中缀表达式转换成逆波兰式. [问题描述]表达式计算是实现程序设计语言的基本 ...

  10. 将表达式转换成逆波兰式

    http://www.cnblogs.com/stay-foolish/archive/2012/04/25/2470590.html 假设表达式由单字母变量和双目四则运 算算符构成.试写一个算法,将 ...

最新文章

  1. win7安装omnetpp-4.6
  2. sql查询每个学生的最高成绩mysql语句
  3. update 后面能接子查询吗_只用身份证能查询CPA成绩吗?查询步骤不能忘
  4. JAVA 排序工具类
  5. merge intervals(合并间隔)
  6. 4.MySQL基础操作
  7. Ubuntu18.04系统快速下载Github代码
  8. ARCH-LINUX 折(安)腾(装)记
  9. 重启php7.0-fpm
  10. php文件的锁定机制
  11. adb:设置手机屏幕亮度
  12. macBigSur使用mathtype数学公式编辑
  13. 20200107笔记
  14. vue大文件上传控件选哪个好?
  15. DDD | 领域驱动设计 Vs 敏捷 Vs 面向对象
  16. Linux文件和目录管理(3)
  17. 织梦模板修改方法大全
  18. 海洋静力触探仪(CPT)一次故障记录
  19. 北邮网研院宿舍_北邮研究生宿舍条件(北邮研究生宿舍图片)
  20. 读书心得 | 软技能-代码之外的生存指南

热门文章

  1. php中文件下载,PHP中文件下载
  2. vba读取csv文件到excel_利用VBA打开顺序文件,并读取
  3. 香帅的北大金融学课笔记6 -- 货币基金
  4. python3精要(51)-json
  5. sympy随笔-python符号计算
  6. 【算法】算法秋招个人总结
  7. 【NLP】NLP中的消歧
  8. 【Python】30天进阶Python!这个Github项目你值得拥有!
  9. 【数学基础】一份非常适合人工智能学习的高等数学基础材料中文版 (国内教材精华)...
  10. 全国人工智能大赛 AI+4K HDR赛项 冠军团队方案分享