-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathevaluate.py
More file actions
30 lines (23 loc) · 718 Bytes
/
evaluate.py
File metadata and controls
30 lines (23 loc) · 718 Bytes
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
from sys import argv
import operator
postfix = argv[1]
def evaluate(expression):
stack = []
for i in expression:
if i.isdigit():
stack.append(int(i))
else:
operand_One = stack.pop()
operand_Two = stack.pop()
operators = {'+': operator.add,
'-': operator.sub,
'*': operator.mul,
'/': operator.truediv
}
try:
stack.append(operators[i](operand_Two, operand_One))
except KeyError:
print(f"Wrong expression '{i}'!")
# print(f"{stack}")
return stack.pop()
print(evaluate(postfix))