Die definierten mutierenden Methoden der Konto-Klasse können durch die Angabe
negativer Beträge zweckentfremdet werden. Erweitern Sie sie so,
dass nur positive Beträge berücksichtigt werden. Passen Sie
außerdem die Methode zum Abheben so an, dass nur gedeckte Beträge
abgehoben werden können. Damit aufrufender Programmcode überprüfen kann,
ob eine Transaktion erfolgreich war, sollen die geänderten Methoden
einen entsprechenden Wahrheitswert zurück liefern.
Fügen Sie eine Methode zum Verzinsen hinzu, die das Guthaben
anhand eines festen Zinssatzes erhöht. Der Zinssatz soll bei der
Konstruktion eines Konto-Objektes angegeben werden, wie die
folgenden Aufrufe deutlich machen.
>>> k = Konto(0.04)
Guthaben: 0.0
>>> k.einzahlen(100)
>>> k.verzinsen
Guthaben: 104.0
Definieren Sie eine Klasse Stack zur Implementierung von Sammlungen
nach dem LIFO-Prinzip (last-in, first-out):
Wie auf einem Stapel kann das Element, dass zuletzt eingefügt wurde, als erstes entnommen werden.
Implementieren Sie die folgenden Methoden:
is_empty liefert einen Wahrheitswert, der angibt, ob der zugehörige Stack leer ist;top liefert, falls der Stack nicht leer ist, das oberste Element des Stacks ohne den Stack zu manipulieren;push legt ein übergebenes Element oben auf den Stack;pop nimmt ein Element von einem nicht leeren Stack und liefert es zurück.Definieren Sie außerdem Methoden __init__, __str__ und __repr__, so dass Stacks wie nachfolgend gezeigt in der interaktiven Python-Umgebung verwendet werden können.
>>> s = Stack()
>>> s
Stack:
>>> s.is_empty()
True
>>> s.push(42)
Stack: 42
>>> s.is_empty()
False
>>> s.top()
42
>>> s.push(43)
Stack: 42 43
>>> s.top()
=> 43
>>> s.pop()
43
>>> s
Stack: 42
Definieren Sie eine Klasse Queue zur Implementierung von Sammlungen
nach dem FIFO-Prinzip (first-in, first-out):
Wie in einer Warteschlange kann das Element, das als erstes eingefügt wurde, als erstes entnommen werden.
Implementieren Sie die folgenden Methoden:
is_empty liefert einen Wahrheitswert zurück, der angibt, ob die Queue leer ist;first liefert das erste Element einer nicht leeren Warteschlange, ohne sie zu manipulieren;enqueue fügt der Warteschlange hinten ein übergebenes Element hinzu;dequeue entfernt das vorderste Element und gibt es zurück.Definieren Sie darüber hinaus Methoden, __init__, __str__ und __repr__, so dass Queues wie nachfolgend gezeigt in der interaktiven Python-Umgebung verwendet werden können.
>>> q = Queue()
>>> q
Queue:
>>> q.is_empty()
True
>>> q.enqueue(42)
Queue: 42
>>> q.is_empty()
False
>>> q.first()
42
>>> q.enqueue(43)
Queue: 42 43
>>> q.first
42
>>> q.dequeue()
42
>>> q.first()
43