Python 实现中缀表达式求值:含幂运算,处理除数为 0 情况
以下是使用 Python 实现的计算中缀表达式值的程序: ```python import re def calculate(expression): # 去除空格 expression = expression.replace(' ', '') # 定义运算符优先级 priority = {'+': 1, '-': 1, '*': 2, '/': 2, '^': 3} # 定义一个栈用于存储操作符 op_stack = [] # 定义一个栈用于存储操作数 num_stack = [] # 数字匹配模式 num_pattern = re.compile(r'\d+') i = 0 while i < len(expression): if expression[i].isdigit(): num = '' while i < len(expression) and expression[i].isdigit(): num += expression[i] i += 1 num_stack.append(int(num)) continue elif expression[i] == '(': op_stack.append(expression[i]) i += 1 continue elif expression[i] == ')': while op_stack[-1]!= '(': op2 = num_stack.pop() op1 = num_stack.pop() op = op_stack.pop() num_stack.append(compute(op1, op2, op)) op_stack.pop() i += 1 continue else: while op_stack and priority[op_stack[-1]] >= priority[expression[i]]: op2 = num_stack.pop() op1 = num_stack.pop() op = op_stack.pop() num_stack.append(compute(op1, op2, op)) op_stack.append(expression[i]) i += 1 while op_stack: op2 = num_stack.pop() op1 = num_stack.pop() op = op_stack.pop() num_stack.append(compute(op1, op2, op)) return num_stack.pop() def compute(op1, op2, op): if op == '+': return op1 + op2 elif op == '-': return op1 - op2 elif op == '*': return op1 * op2 elif op == '/': if op2 == 0: return "invalid" else: return op1 // op2 elif op == '^': return op1 op2 while True: try: expression = input() result = calculate(expression) print(result) except EOFError: break ``` ######[AI写代码神器 | 584点数解答 | 2024-10-24 16:38:27]
- 递归下降语法分析程序实例:从文法到 C 代码的完整实现(字节豆包 | 1371点数解答 | 2024-12-12 22:46:04)278
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)496
- SQL 实现:精准查询 20 岁选课学生学号、姓名、平均与总成绩(去重取最高) (字节豆包 | 116点数解答 | 2024-10-21 00:46:57)222
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)449
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)440
- C++实现矩阵类:重载运算符+与=,含构造、析构及异常处理(字节豆包 | 671点数解答 | 2025-06-23 15:25:09)241
- C++ 实现矩阵类:重载运算符加与赋值,含构造、析构及错误处理(字节豆包 | 993点数解答 | 2025-06-23 15:27:43)172
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)486
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)289
- Python 代码转 C++:计算花朵鲜艳值总和(字节豆包 | 408点数解答 | 2026-04-19 21:50:57)19
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)350