我们人类习惯于书写“中缀式”,如 3 + 5 * 2 ,其值为13。 (p.s. 为什么人类习惯中缀式呢?是因为中缀式比后缀式好用么?) 而计算机更加习惯“后缀式”(也叫“逆波兰式”,Reverse Polish Notation)。上述中缀式对应的后缀式是: 3 5 2 * + 现在,请对输入的后缀式进行求值。 输入格式: 在一行中输入一个后缀式,运算数和运算符之间用空格分隔,运算数长度不超过6位,运算符仅有+ - * / 四种。 输出格式: 在一行中输出后缀式的值,保留一位小数。
时间: 2024-02-12 19:07:27 浏览: 298
好的,我可以帮您写一个Python程序来求解输入的后缀式的值:
```python
def eval_postfix(expr):
stack = []
for token in expr.split():
if token.isdigit():
stack.append(float(token))
else:
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 == '/':
stack.append(a / b)
return round(stack.pop(), 1)
expr = input()
result = eval_postfix(expr)
print(result)
```
这个程序首先定义了一个`eval_postfix`函数来计算输入的后缀式的值。它使用一个栈来存储运算数,并依次处理每个运算符。如果当前的标记是一个数字,就将其转换为浮点数并压入栈中。如果当前的标记是一个运算符,就从栈中弹出两个数,进行相应的计算,并将结果压入栈中。最后,栈中只剩下一个数,就是后缀式的值。
然后,程序从标准输入中读取一个后缀式,并调用`eval_postfix`函数来计算它的值。最后,程序将结果输出到标准输出,并保留一位小数。
希望这个程序对您有帮助!
阅读全文
相关推荐


















