Zapis bez nawiasów

Odwrotna notacja polska: obliczanie wartości wyrażenia - Informatyka - liceum klasa 3, zakres rozszerzony (Python)

W zwykłym (infiksowym) zapisie operator stoi między argumentami i potrzebne są nawiasy: `(2 + 3) * 4`. W **odwrotnej notacji polskiej** (ONP, zapis postfiksowy) operator stoi **po** argumentach: `2 3 + 4 *`. Nawiasy nie są potrzebne, bo kolejność działań wynika z kolejności symboli. ONP oblicza się **stosem**: liczbę kładziemy na stos, a operator zdejmuje dwie liczby i kładzie wynik.

tokens = "2 3 + 4 *".split()
stack = []
for t in tokens:
    if t in "+-*/":
        b = stack.pop()
        a = stack.pop()
        stack.append(a + b if t == "+" else a - b if t == "-" else a * b if t == "*" else a / b)
    else:
        stack.append(int(t))
    print(t.ljust(3), stack)
print("wynik:", stack[0])

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Informatyka - liceum klasa 3, zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.