Obliczanie wyrażenia w ONP
Stos, kolejka i odwrotna notacja polska - Algorytmy: zakres rozszerzony (Python)
W **odwrotnej notacji polskiej** (ONP) operator stoi za argumentami: zamiast (3 + 4) * 2 piszemy `3 4 + 2 *`. Nawiasy nie są potrzebne. Obliczanie używa stosu: liczbę odkładamy, a operator zdejmuje dwie liczby, wykonuje działanie i odkłada wynik. Na końcu na stosie zostaje wartość wyrażenia.
def evaluate_rpn(expression):
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:
stack.append(a / b)
else:
stack.append(float(token))
print(f"{token:>3} stos: {stack}")
return stack.pop()
print("wynik:", evaluate_rpn("3 4 + 2 *"))Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Algorytmy: zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.