Discovery & Checkpoint
Gegeben ist folgende Klassendefinition:
class Spielfigur:
def __init__(self, name, hp):
self.name = name
self.hp = hp
def heilen(self, wert):
self.hp += wert
def schaden_nehmen(self, wert):
self.hp -= wert
held = Spielfigur("Ritter", 100)
held.schaden_nehmen(30)
held.heilen(10)Welchen Wert hat das Attribut held.hp nach der Ausführung?
Parsons Puzzle
Bringe die Code-Blöcke in die richtige Reihenfolge und rücke sie korrekt ein, um die Klasse Bankkonto zu definieren, eine Einzahlung vorzunehmen und anschließend den Kontostand auszugeben.
Tipp: Benutze die Anfasser zum Verschieben und ⇥- / ⇥+ zum Einrücken.
Scaffolding & Bugfix
In der Methode abheben hat sich ein Fehler eingeschlichen: Der Parameter self fehlt im Methodenkopf und das Attribut wird nicht korrekt über die Instanz angesprochen.
Repariere die Methode abheben, sodass der Betrag ordnungsgemäß vom Guthaben abgezogen wird.
Tipp: Passe den Code im Editor an und klicke auf „Ausführen & Prüfen“.
class Bankkonto:
def __init__(self, inhaber, guthaben):
self.inhaber = inhaber
self.guthaben = guthaben
def abheben(self, betrag):
self.guthaben -= betrag
def anzeigen(self):
print(f"Konto von {self.inhaber}: {self.guthaben} EUR")
konto = Bankkonto("Lukas", 120)
konto.abheben(40)
konto.anzeigen()
Coding Challenge
Erstelle die Klasse Bankkonto mit folgenden Anforderungen:
1. Konstruktor __init__(self, inhaber, guthaben) speichert self.inhaber und self.guthaben.
2. Methode einzahlen(self, betrag) erhöht self.guthaben um betrag.
3. Methode abheben(self, betrag) verringert self.guthaben um betrag.
4. Methode kontostand(self) gibt den formatierten String "Inhaber: <inhaber> | Guthaben: <guthaben>" auf der Konsole aus (print).
Erstelle anschließend ein Objekt mein_konto für 'Lukas' mit 120 Euro Startguthaben.
Führe danach folgende Schritte aus:
- Zahle 70 Euro ein.
- Hebe 40 Euro ab.
- Rufe die Methode kontostand() auf.
Tipp: Schreibe deinen Code in den Editor und klicke auf „Code testen“.
Test-Suite
class Bankkonto:
def __init__(self, inhaber, guthaben):
self.inhaber = inhaber
self.guthaben = guthaben
def einzahlen(self, betrag):
self.guthaben += betrag
def abheben(self, betrag):
self.guthaben -= betrag
def kontostand(self):
print(f"Inhaber: {self.inhaber} | Guthaben: {self.guthaben}")
mein_konto = Bankkonto("Lukas", 120)
mein_konto.einzahlen(70)
mein_konto.abheben(40)
mein_konto.kontostand()
Das smarte Banking-Terminal
Baue dein Bankkonto zu einem echten Terminal mit Schutzfunktionen aus!
Ideen:
- Verhindere Überziehungen in abheben(): Gib eine Fehlermeldung aus, wenn betrag > self.guthaben ist.
- Füge eine Methode ueberweisen(self, ziel_konto, betrag) hinzu, die Geld von einem Objekt auf ein anderes überträgt.
- Führe ein Attribut self.transaktionen (Liste) ein, in dem jede Ein- und Auszahlung protokolliert wird.
Tipp: Passe den Code an, führe ihn aus oder lade dein fertiges Programm als Python-Datei herunter.
Lektion vollständig abgeschlossen!
Du hast alle Phasen gemeistert und kannst hier im Sandbox-Labor frei weiterprogrammieren.