In den bisherigen Teilen hast du dein To-Do-Listen-Programm immer Zeile für Zeile aufgebaut. Alles lief von oben nach unten – und das hat auch super funktioniert!
Aber:
Der Code wird langsam länger, und manche Teile wiederholen sich.
Zum Beispiel:
- Das Anzeigen der Aufgaben
- Das Speichern der Liste in der Datei
Jetzt ist der perfekte Zeitpunkt, um deinen Code besser zu strukturieren – mit Funktionen.
Was ist eine Funktion?
Eine Funktion ist ein benannter Abschnitt deines Programms.
Du kannst sagen:
„Hier ist ein Block Code, der etwas Bestimmtes macht. Ich gebe ihm einen Namen. Und wenn ich das später brauche, rufe ich ihn einfach auf.“
Statt z. B. immer das hier zu schreiben:
with open("aufgaben.txt", "w", encoding="utf-8") as datei:
for aufgabe in aufgaben:
datei.write(aufgabe + "\n")
… kannst du einfach sagen:
speichern()
Und Python weiß, was du meinst – weil du ihm vorher erklärt hast, was speichern()
tun soll.
Ein Vergleich: Funktion = Rezept
Stell dir eine Funktion vor wie ein Rezept:
def kuchen_backen():
print("1. Teig rühren")
print("2. In den Ofen schieben")
print("3. Abkühlen lassen")
Wenn du später kuchen_backen()
aufrufst, macht Python alle Schritte im Rezept.
Erste eigene Funktion schreiben
def begruessung():
print("Hallo! Willkommen zu deiner Aufgabenliste.")
Das bedeutet:
Ich definiere (def
) eine Funktion mit dem Namen begruessung
.
Um sie auszuführen, schreibst du einfach:
begruessung()
Jetzt wenden wir das auf unser Projekt an
Wir nehmen das Programm aus Teil 7 und bauen folgende Funktionen:
Funktion | Was sie tut |
---|---|
liste_laden() | Lädt Aufgaben aus der Datei |
liste_speichern() | Schreibt Aufgaben in die Datei |
aufgaben_zeigen() | Zeigt alle Aufgaben mit Nummer |
hauptmenü() | Führt das Menü aus (Hauptschleife) |
Der komplette Code mit Funktionen
DATEINAME = "aufgaben.txt"
aufgaben = []
# Funktion 1: Liste laden
def liste_laden():
global aufgaben
try:
with open(DATEINAME, "r", encoding="utf-8") as datei:
aufgaben = [zeile.strip() for zeile in datei]
except FileNotFoundError:
aufgaben = []
# Funktion 2: Liste speichern
def liste_speichern():
with open(DATEINAME, "w", encoding="utf-8") as datei:
for aufgabe in aufgaben:
datei.write(aufgabe + "\n")
# Funktion 3: Aufgaben anzeigen
def aufgaben_zeigen():
if not aufgaben:
print("🎉 Keine Aufgaben – du bist fertig!")
else:
print("\n📝 Deine Aufgaben:")
for nummer in range(len(aufgaben)):
print(f"{nummer + 1}. {aufgaben[nummer]}")
# Funktion 4: Hauptmenü
def hauptmenü():
while True:
print("\nWas möchtest du tun?")
print("1 - Neue Aufgabe hinzufügen")
print("2 - Aufgaben anzeigen")
print("3 - Aufgabe erledigt")
print("4 - Beenden")
wahl = input("👉 Deine Auswahl: ")
if wahl == "1":
neue_aufgabe = input("Was möchtest du erledigen? ")
aufgaben.append(neue_aufgabe)
liste_speichern()
print(f"✅ Aufgabe hinzugefügt: {neue_aufgabe}")
elif wahl == "2":
aufgaben_zeigen()
elif wahl == "3":
if not aufgaben:
print("⚠️ Du hast keine Aufgaben zum Erledigen.")
else:
eingabe = input("Welche Nummer ist erledigt? ")
if eingabe.isdigit():
nummer = int(eingabe) - 1
if 0 <= nummer < len(aufgaben):
erledigt = aufgaben.pop(nummer)
liste_speichern()
print(f"✅ '{erledigt}' wurde entfernt.")
else:
print("⚠️ Diese Nummer gibt es nicht.")
else:
print("⚠️ Bitte gib eine gültige Zahl ein.")
elif wahl == "4":
print("Tschüss! 👋")
break
else:
print("⚠️ Ungültige Eingabe.")
# Programm starten
liste_laden()
hauptmenü()
Neue Begriffe erklärt
Begriff | Bedeutung |
---|---|
def name(): | Definiert eine Funktion |
name() | Führt die Funktion aus |
global aufgaben | Erlaubt der Funktion, die globale Liste zu verändern |
return (bald) | Gibt einen Wert zurück – kommt in Teil 9 |
🎉 Vorteile von Funktionen
- Dein Code ist übersichtlicher
- Du kannst Abschnitte wiederverwenden
- Du verstehst leichter, was wo passiert
- Du kannst Teile einzeln testen
🧪 Mini-Challenges
- Schreibe eine Funktion
benutzer_begruessen()
, die fragt: „Wie heißt du?“ und dann mit Namen begrüßt. - Trenne die Eingabe der Aufgabe in eine eigene Funktion
- Speichere die Anzahl erledigter Aufgaben und zeige sie nach jedem Löschen
Schreibe einen Kommentar