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