Teil 10: return im echten Projekt – so machst du dein Programm schlauer

In Teil 9 hast du gelernt, dass man mit return in einer Funktion ein Ergebnis zurückgeben kann – zum Beispiel eine Zahl, ein Text oder ein Listen-Eintrag.

Jetzt zeigen wir dir, wo das in deinem To-Do-Projekt Sinn ergibt, und wie du damit deinen Code aufräumen und verbessern kannst.


Ziel dieses Teils

  • Du baust das To-Do-Menü weiter aus
  • Du benutzt return, um Ergebnisse aus Funktionen zu bekommen
  • Du machst den Code klarer und verständlicher

Was du brauchst

  • Dein Projekt aus Teil 8 oder 9 (mit Funktionen und Dateispeicherung)
  • Ein Texteditor
  • 10–15 Minuten Zeit

Wo kann man return sinnvoll einsetzen?

Hier sind 3 typische Stellen in deinem Projekt:

FunktionWas sie tutWas sie zurückgeben könnte
Eingabe einer AufgabeFragt den BenutzerDen eingegebenen Text
Aufgabe erledigenEntfernt eine AufgabeDie gelöschte Aufgabe
Menüpunkt auswählenFragt „Was möchtest du tun?“Die Auswahl ("1", "2" usw.)

Beispiel 1: Neue Aufgabe mit return

Bisher hast du das so gemacht:

neue_aufgabe = input("Was möchtest du erledigen? ")
aufgaben.append(neue_aufgabe)

Jetzt baust du eine Funktion:

def frage_nach_aufgabe():
    text = input("Was möchtest du erledigen? ")
    return text

Und benutzt sie so:

aufgabe = frage_nach_aufgabe()
aufgaben.append(aufgabe)

💡 Vorteil: Die Funktion ist klar getrennt – sie kümmert sich nur um die Eingabe.


Beispiel 2: Aufgabe erledigen mit return

Vorher:

eingabe = input("Welche Nummer ist erledigt? ")
...
aufgaben.pop(index)

Jetzt bauen wir das um:

def loesche_aufgabe():
    if not aufgaben:
        print("⚠️ Keine Aufgaben.")
        return None  # Nichts zu löschen

    eingabe = input("Welche Nummer ist erledigt? ")
    if not eingabe.isdigit():
        print("⚠️ Bitte gib eine Zahl ein.")
        return None

    index = int(eingabe) - 1
    if 0 <= index < len(aufgaben):
        return aufgaben.pop(index)
    else:
        print("⚠️ Ungültige Nummer.")
        return None

Und dann:

erledigt = loesche_aufgabe()
if erledigt:
    print(f"✅ '{erledigt}' wurde entfernt.")
    liste_speichern()

💡 Vorteil: Die Funktion kümmert sich nur um das Löschen – nicht um das Drucken oder Speichern.


Beispiel 3: Menüpunkt mit return

def zeige_menü():
    print("\nWas möchtest du tun?")
    print("1 - Neue Aufgabe hinzufügen")
    print("2 - Aufgaben anzeigen")
    print("3 - Aufgabe erledigt")
    print("4 - Beenden")
    return input("👉 Deine Auswahl: ")

Und im Hauptmenü:

while True:
    wahl = zeige_menü()

    if wahl == "1":
        aufgabe = frage_nach_aufgabe()
        aufgaben.append(aufgabe)
        liste_speichern()
        print(f"✅ Aufgabe hinzugefügt: {aufgabe}")

    elif wahl == "2":
        aufgaben_zeigen()

    elif wahl == "3":
        erledigt = loesche_aufgabe()
        if erledigt:
            print(f"✅ '{erledigt}' wurde entfernt.")
            liste_speichern()

    elif wahl == "4":
        print("Tschüss! 👋")
        break

    else:
        print("⚠️ Ungültige Eingabe.")

Der vollständige Code mit return

DATEINAME = "aufgaben.txt"
aufgaben = []

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 = []

def liste_speichern():
    with open(DATEINAME, "w", encoding="utf-8") as datei:
        for aufgabe in aufgaben:
            datei.write(aufgabe + "\n")

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]}")

def frage_nach_aufgabe():
    text = input("Was möchtest du erledigen? ")
    return text

def loesche_aufgabe():
    if not aufgaben:
        print("⚠️ Keine Aufgaben.")
        return None

    eingabe = input("Welche Nummer ist erledigt? ")
    if not eingabe.isdigit():
        print("⚠️ Bitte gib eine Zahl ein.")
        return None

    index = int(eingabe) - 1
    if 0 <= index < len(aufgaben):
        return aufgaben.pop(index)
    else:
        print("⚠️ Ungültige Nummer.")
        return None

def zeige_menü():
    print("\nWas möchtest du tun?")
    print("1 - Neue Aufgabe hinzufügen")
    print("2 - Aufgaben anzeigen")
    print("3 - Aufgabe erledigt")
    print("4 - Beenden")
    return input("👉 Deine Auswahl: ")

def hauptmenü():
    while True:
        wahl = zeige_menü()

        if wahl == "1":
            aufgabe = frage_nach_aufgabe()
            aufgaben.append(aufgabe)
            liste_speichern()
            print(f"✅ Aufgabe hinzugefügt: {aufgabe}")

        elif wahl == "2":
            aufgaben_zeigen()

        elif wahl == "3":
            erledigt = loesche_aufgabe()
            if erledigt:
                print(f"✅ '{erledigt}' wurde entfernt.")
                liste_speichern()

        elif wahl == "4":
            print("Tschüss! 👋")
            break

        else:
            print("⚠️ Ungültige Eingabe.")

# Startpunkt
liste_laden()
hauptmenü()

Was du heute gelernt hast

ThemaBedeutung
returnGibt ein Ergebnis zurück
NoneWird automatisch zurückgegeben, wenn kein return da ist
Mehrteilige FunktionenMachen dein Programm übersichtlicher und verständlicher

Mini-Challenges

  • Lass frage_nach_aufgabe() abbrechen, wenn der Benutzer leer lässt
  • Lass loesche_aufgabe() die neue Aufgabenliste zurückgeben
  • Zähle, wie viele Aufgaben der Benutzer insgesamt erledigt hat

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert