逆波兰表达式计算器:高效计算算式的利器
逆波兰表示法是一种将运算符(operator)写在操作数(operand)后面的描述程序(算式)的方法。举个例子,我们平常用中缀表示法描述的算式(1 + 2)*(5 + 4),改为逆波兰表示法之后则是1 2 + 5 4 + *。相较于中缀表示法,逆波兰表示法的优势在于不需要括号。
请输出以逆波兰表示法输入的算式的计算结果。
输入格式: 在一行中输入1个算式。相邻的符号(操作数或运算符)用1个空格隔开。
输出格式: 在一行中输出计算结果。
限制: 2≤算式中操作数的总数≤100
1≤算式中运算符的总数≤99
运算符仅包括'+'、'-'、'*',操作数、计算过程中的值以及最终的计算结果均在int范围内。
输入样例1: 4 3 + 2 - 输出样例1: 5 输入样例2: 1 2 + 3 4 - * 输出样例2: -3
def calculate_rpn(expression):
stack = []
operators = set(['+', '-', '*']) # 运算符集合
for token in expression.split():
if token not in operators:
stack.append(int(token))
else:
operand2 = stack.pop()
operand1 = stack.pop()
if token == '+':
stack.append(operand1 + operand2)
elif token == '-':
stack.append(operand1 - operand2)
elif token == '*':
stack.append(operand1 * operand2)
return stack[0] # 最后栈中的元素即为计算结果
# 读取输入的逆波兰表达式
expression = input()
# 计算结果
result = calculate_rpn(expression)
# 输出计算结果
print(result)
你可以将上述代码保存为一个名为rpn_calculator.py的文件,并在命令行中运行它。输入逆波兰表达式后,程序将输出计算结果。
希望这可以帮到你!如有任何问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/XjU 著作权归作者所有。请勿转载和采集!