如何用Python实现基于栈的算数表达式求值算法?

2026-06-11 07:401阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计213个文字,预计阅读时间需要1分钟。

如何用Python实现基于栈的算数表达式求值算法?

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

如何用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 == "\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())

标签:使用

本文共计213个文字,预计阅读时间需要1分钟。

如何用Python实现基于栈的算数表达式求值算法?

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

如何用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 == "\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())

标签:使用