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