2、编写程序,输入一个后缀表达式字符串,操作符只可能有+、-、*、/四种二元运算,操作数之间用空格隔开。输出该表达式的计算结果,若表达式不正确,给出错误提示。
时间: 2023-04-28 21:01:39 浏览: 53
可以使用栈来实现后缀表达式的计算。具体步骤如下:
1. 从左到右遍历后缀表达式字符串,遇到数字就入栈,遇到操作符就从栈中弹出两个数字进行计算,并将计算结果入栈。
2. 如果遍历完后栈中只剩下一个数字,那么这个数字就是表达式的计算结果。
3. 如果遍历完后栈中还有多个数字,或者遍历完后栈为空,那么表达式不正确,给出错误提示。
下面是具体的代码实现:
```python
def calculate(expression):
stack = []
for token in expression.split():
if token.isdigit():
stack.append(int(token))
elif token in ['+', '-', '*', '/']:
if len(stack) < 2:
print('表达式不正确')
return
b = stack.pop()
a = stack.pop()
if token == '+':
stack.append(a + b)
elif token == '-':
stack.append(a - b)
elif token == '*':
stack.append(a * b)
elif token == '/':
if b == 0:
print('除数不能为0')
return
stack.append(a / b)
else:
print('表达式不正确')
return
if len(stack) != 1:
print('表达式不正确')
return
return stack[0]
```
这个函数接受一个后缀表达式字符串作为参数,返回表达式的计算结果。如果表达式不正确,会给出相应的错误提示。例如:
```python
>>> calculate('3 4 + 5 *')
35
>>> calculate('3 4 + 5')
表达式不正确
>>> calculate('3 0 /')
除数不能为0
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.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)