Python解析 算数表达式求值 栈的使用

本文阅读 1 分钟
首页 Python笔记 正文

使用Python实现一种算数表达式求值的算法,模拟这种使用栈的方式,这是由E.W.Dijkstra在20世纪60年代发明的一种非常简单的算法。代码模拟仅仅表现一种编程思想,代码的逻辑并不完全

  1. if __name__ == "__main__":
  2. cal_str = input("请输入算数表达式(e.g.(((1+2)*(3+5))+2), 只适合简单的算数表达式):")
  3. num_stack = []
  4. symbol_stack = []
  5. for chr in cal_str:
  6. #print(chr)
  7. if chr == "(":
  8. continue
  9. elif chr == "" or chr == "\t" or chr == "\n":
  10. continue
  11. elif chr == "+":
  12. symbol_stack.append(chr)
  13. elif chr == "-":
  14. symbol_stack.append(chr)
  15. elif chr == "*":
  16. symbol_stack.append(chr)
  17. elif chr == "/":
  18. symbol_stack.append(chr)
  19. elif chr == "sqrt":
  20. symbol_stack.append(chr)
  21. elif chr == ")":
  22. total_num = num_stack.pop()
  23. now_symbol = symbol_stack.pop()
  24. if now_symbol == "+":
  25. total_num += num_stack.pop()
  26. if now_symbol == "-":
  27. total_num -= num_stack.pop()
  28. if now_symbol == "*":
  29. total_num *= num_stack.pop()
  30. if now_symbol == "/":
  31. total_num /= num_stack.pop()
  32. num_stack.append(total_num)
  33. else:
  34. num_stack.append(int(chr))
  35. print(num_stack.pop())
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

Python有用的内置函数
« 上一篇 12-24
Python实现斐波那契递归和尾递归计算
下一篇 » 12-24

发表评论