blob: fef9738bb967d72455aac4dfe77f946bdf6a7d86 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def evaluate_rpn(expression: str) -> float:
stack = []
for token in expression.split():
if token in "+-*/":
b = stack.pop()
a = stack.pop()
if token == "+":
stack.append(a + b)
elif token == "-":
stack.append(a - b)
elif token == "*":
stack.append(a * b)
else: # token == "/"
stack.append(a / b)
else:
stack.append(float(token))
return stack[0]
if __name__ == "__main__":
rpn_expression = "3 4 + 2 * 1 +"
result = evaluate_rpn(rpn_expression)
print(f"RPN expression: {rpn_expression}")
print(f"Result: {result}")
|