酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]