zoukankan      html  css  js  c++  java
  • Python解析 算数表达式求值 栈的使用

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

    if __name__ == "__main__":
        cal_str = input("请输入算数表达式(e.g.(((1+2)*(3+5))+2), 只适合简单的算数表达式):")
        num_stack = []
        symbol_stack = []
        for chr in cal_str:
            #print(chr)
            if chr == "(":
                continue
            elif chr == "" or chr == "	" or chr == "
    ":
                continue
            elif chr == "+":
                symbol_stack.append(chr)
            elif chr == "-":
                symbol_stack.append(chr)
            elif chr == "*":
                symbol_stack.append(chr)
            elif chr == "/":
                symbol_stack.append(chr)
            elif chr == "sqrt":
                symbol_stack.append(chr)
            elif chr == ")":
                total_num = num_stack.pop()
                now_symbol = symbol_stack.pop()
                if now_symbol == "+":
                    total_num += num_stack.pop()
                if now_symbol == "-":
                    total_num -= num_stack.pop()
                if now_symbol == "*":
                    total_num *= num_stack.pop()
                if now_symbol == "/":
                    total_num /= num_stack.pop()
                num_stack.append(total_num)
            else:
                num_stack.append(int(chr))
        print(num_stack.pop())
  • 相关阅读:
    ASP.NET结合COM组件发送Email
    木马生成技术
    AJAX中使用Session
    对象模型文档对象模型DOM简介
    何遍历数据源中的表名称
    AJAX.NET用户开发指南
    用ASP.NET上传大文件
    .net反编译利器
    Equals和GetHashcode
    Factory Method模式
  • 原文地址:https://www.cnblogs.com/frisk/p/11625347.html
Copyright © 2011-2022 走看看