5.4 四则运算(用字典实现)
时间: 2024-05-10 13:20:36 浏览: 23
以下是用字典实现四则运算的示例代码:
```python
def calc(expression):
# 定义符号优先级
priority = {'+': 1, '-': 1, '*': 2, '/': 2}
# 定义操作数栈和操作符栈
operand_stack = []
operator_stack = []
# 将表达式字符串转化为列表
expression = expression.split()
# 遍历表达式列表
for token in expression:
if token.isdigit(): # 如果是数字,压入操作数栈
operand_stack.append(int(token))
elif token in '+-*/': # 如果是操作符,进行运算
while operator_stack and priority[operator_stack[-1]] >= priority[token]:
operator = operator_stack.pop()
operand2 = operand_stack.pop()
operand1 = operand_stack.pop()
result = eval(f'{operand1}{operator}{operand2}')
operand_stack.append(result)
operator_stack.append(token)
# 处理剩余的操作符
while operator_stack:
operator = operator_stack.pop()
operand2 = operand_stack.pop()
operand1 = operand_stack.pop()
result = eval(f'{operand1}{operator}{operand2}')
operand_stack.append(result)
# 返回最终结果
return operand_stack.pop()
```
示例运行:
```python
>>> calc('3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3')
3.0001220703125
>>> calc('1 + 2 * 3 - 4 / 5')
6.2
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)