编写程序,输入一个后缀表达式字符串,操作符只可能有+、-、*、/四种二元运算,操作数之间用空格隔开。输出该表达式的计算结果,若表达式不正确,给出错误提示。
时间: 2023-04-25 10:01:13 浏览: 111
可以使用栈来实现后缀表达式的计算。具体步骤如下:
1. 从左到右扫描后缀表达式字符串,遇到数字就入栈,遇到操作符就从栈中弹出两个数字进行计算,然后将计算结果入栈。
2. 如果扫描完整个字符串后栈中只剩下一个数字,那么这个数字就是表达式的计算结果;否则表达式不正确,给出错误提示。
下面是具体的代码实现:
```python
def evaluate_postfix(expr):
stack = []
for token in expr.split():
if token.isdigit():
stack.append(int(token))
elif token in "+-*/":
if len(stack) < 2:
print("Error: insufficient operands")
return None
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 == :
print("Error: division by zero")
return None
stack.append(a / b)
else:
print("Error: invalid token")
return None
if len(stack) != 1:
print("Error: too many operands")
return None
return stack[]
```
这个函数接受一个后缀表达式字符串作为参数,返回表达式的计算结果。如果表达式不正确,函数会给出相应的错误提示。例如:
```python
>>> evaluate_postfix("3 4 + 5 *")
35
>>> evaluate_postfix("3 4 + 5")
Error: too many operands
>>> evaluate_postfix("3 /")
Error: division by zero
>>> evaluate_postfix("3 + 4")
Error: invalid token
```