加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 10:24:09 所属栏目:Python 来源:网络整理
导读:使用Python实现一种算数表达式求值的算法,模拟这种使用栈的方式,这是由E.W.Dijkstra在20世纪60年代发明的一种非常简单的算法。代码模拟仅仅表现一种编程思想,代码的逻辑并不完全: if __name__ == " __main__ " : cal_str = input( " 请输入算数表达式(e

使用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 == "t" or chr == "n":
            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())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读