Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
85157 sh25_wangtaojie 逆波兰表达式 Python3 解答错误 28 MS 3724 KB 2191 2026-03-06 15:17:22

Tests(0/1):


def evaluate_reverse_polish(expression): """ 计算逆波兰表达式的值 Args: expression (str): 逆波兰表达式字符串,元素间用空格分隔 Returns: float: 表达式的计算结果 """ # 将表达式按空格分割成元素列表 tokens = expression.strip().split() # 使用栈来存储操作数 stack = [] # 定义运算符及其对应的操作 operators = { '+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y, '/': lambda x, y: x / y } # 遍历每个元素 for token in tokens: # 如果是运算符 if token in operators: # 从栈中弹出两个操作数(注意顺序) if len(stack) < 2: raise ValueError("表达式格式错误:运算符缺少操作数") operand2 = stack.pop() operand1 = stack.pop() # 执行运算并将结果压入栈 result = operators[token](operand1, operand2) stack.append(result) else: # 如果是操作数,转换为浮点数并压入栈 try: number = float(token) stack.append(number) except ValueError: raise ValueError(f"无效的操作数: {token}") # 最终栈中应该只有一个元素,即表达式的值 if len(stack) != 1: raise ValueError("表达式格式错误") return stack[0] def main(): """ 主函数:读取输入并输出逆波兰表达式的计算结果 """ try: # 读取输入的逆波兰表达式 expression = input() # 计算表达式的值 result = evaluate_reverse_polish(expression) # 按题目要求格式输出结果 print("%.6f" % result) except ValueError as e: print(f"错误: {e}") except Exception as e: print(f"发生未知错误: {e}") # 程序入口 if __name__ == "__main__": main()


测评信息: