Anwendung - Auswertung von Rechentermen
Auswertung mit Hilfe von zwei Stapeln
Die Auswertung von Rechentermen soll mit Hilfe von zwei Stapeln durchgeführt werden.
Wir benutzen im Folgenden zwei Objekte der Klasse Stapel.
Eine Implementierung der Klasse Stapel findest du in der Datei
stapel.py.
Aufgabe 1
Ergänze zunächst den folgenden Python-Dialog passend zur Abbildung oben.
>>> t = Stapel(['*', '-', 92, 79, 27]) >>> s = Stapel() >>> print(t.getStapel()) ['*', '-', 92, 79, 27] >>> print(s.getStapel()) [] >>> e = t.pop() >>> s.push(e) >>> print(t.getStapel()) ['*', '-', 92, 79] >>> print(s.getStapel()) [27] ...
Aufgabe 2
Der folgende (noch unvollständige) Quelltext zeigt, wie man eine Funktion zur Auswertung von Termen implementieren kann.
from stapel import *
def auswerten(term):
t = Stapel(term)
s = Stapel()
while not t.isEmpty():
print('T:', t.getStapel())
print('S:', s.getStapel())
print()
e = t.pop()
if type(e) == int:
s.push(e)
else:
...
print('T:', t.getStapel())
print('S:', s.getStapel())
print()
return s.top()
Ergänze die Implementierung, so dass folgender Python-Dialog möglich wird. Teste die Funktion
auswerten auch mit anderen Termen.
>>> auswerten(['*', '-', 92, 79, 27]) T: ['*', '-', 92, 79, 27] S: [] T: ['*', '-', 92, 79] S: [27] T: ['*', '-', 92] S: [27, 79] T: ['*', '-'] S: [27, 79, 92] T: ['*'] S: [27, 13] T: [] S: [351] 351