Teil 12: Aufgaben abhaken statt löschen – mit Status [ ] oder [x]

🎯 Ziel dieses Teils

  • Du speicherst Aufgaben mit Status: offen oder erledigt
  • Du markierst Aufgaben statt sie zu löschen
  • Du kannst den Status umschalten

Was ändert sich?

Bisher war eine Aufgabe einfach ein Text – z. B. "Wäsche waschen".

Ab jetzt wird jede Aufgabe ein kleines Paket aus zwei Dingen:

  1. Der Text
  2. Der Status (offen oder erledigt)

Beispiel als Python-Daten:

["[ ] Wäsche waschen", "[x] Python lernen"]

Oder besser (ab Teil 13): als echtes Objekt oder Dictionary.
Aber für heute reicht: Wir speichern den Status als Teil des Textes.


Was musst du dafür tun?

  1. Neue Aufgaben immer mit [ ] vorne speichern
  2. Aufgaben anzeigen, so wie sie gespeichert sind
  3. Wenn jemand sagt „diese Aufgabe ist erledigt“, dann:
    • Setze das [ ] zu [x]
    • Lass den Rest der Aufgabe so, wie er ist

Neue Aufgabe hinzufügen

Statt:

aufgaben.append("Einkaufen")

Jetzt:

aufgaben.append("[ ] " + aufgabe_text)

Aufgabe als erledigt markieren

Wenn z. B. "[ ] Einkaufen" in der Liste steht, soll daraus werden:
"[x] Einkaufen"

Dazu brauchst du ein bisschen Text ersetzen:

if aufgaben[nummer].startswith("[ ]"):
    aufgaben[nummer] = aufgaben[nummer].replace("[ ]", "[x]", 1)

Der neue Lösch-Befehl wird zum Abhaken-Befehl

Hier ist eine neue Funktion abhaken_aufgabe():

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

    try:
        nummer = int(input("Welche Nummer ist erledigt? ")) - 1

        if 0 <= nummer < len(aufgaben):
            if aufgaben[nummer].startswith("[ ]"):
                aufgaben[nummer] = aufgaben[nummer].replace("[ ]", "[x]", 1)
                print("✅ Aufgabe abgehakt.")
            elif aufgaben[nummer].startswith("[x]"):
                print("ℹ️ Diese Aufgabe ist schon erledigt.")
            else:
                print("⚠️ Unbekanntes Format.")
        else:
            print("⚠️ Ungültige Nummer.")
    except ValueError:
        print("⚠️ Bitte gib eine Zahl ein.")

Aufgaben speichern & laden bleibt gleich

Da alles in Textform gespeichert wird (z. B. [ ] Einkaufen), brauchst du in der Datei nichts ändern.

Du musst nur sicherstellen:
Beim Speichern bleibt die Formatierung erhalten, z. B.:

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

So sieht dein neues Menü aus

1 - Neue Aufgabe hinzufügen  
2 - Aufgaben anzeigen  
3 - Aufgabe abhaken  
4 - Beenden

Der vollständige neue Code-Ausschnitt (vereinfachte Version)

Hier ist die neue abhaken_aufgabe() Funktion eingebaut:

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

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

    try:
        nummer = int(input("Welche Nummer ist erledigt? ")) - 1

        if 0 <= nummer < len(aufgaben):
            if aufgaben[nummer].startswith("[ ]"):
                aufgaben[nummer] = aufgaben[nummer].replace("[ ]", "[x]", 1)
                print("✅ Aufgabe abgehakt.")
            elif aufgaben[nummer].startswith("[x]"):
                print("ℹ️ Diese Aufgabe ist schon erledigt.")
            else:
                print("⚠️ Unbekanntes Format.")
        else:
            print("⚠️ Ungültige Nummer.")
    except ValueError:
        print("⚠️ Bitte gib eine Zahl ein.")

Und im Hauptmenü:

if wahl == "1":
    aufgabe = frage_nach_aufgabe()
    aufgaben.append(aufgabe)
    liste_speichern()

elif wahl == "2":
    aufgaben_zeigen()

elif wahl == "3":
    abhaken_aufgabe()
    liste_speichern()

Beispiel-Ausgabe

Was möchtest du tun?
1 - Neue Aufgabe hinzufügen
2 - Aufgaben anzeigen
3 - Aufgabe abhaken
4 - Beenden
👉 2

📝 Deine Aufgaben:
1. [ ] Python lernen
2. [x] Müll rausbringen

👉 3
Welche Nummer ist erledigt? 1
✅ Aufgabe abgehakt.

Was du heute gelernt hast

ThemaErklärung
Aufgaben mit Status[ ] = offen, [x] = erledigt
startswith()Prüft, wie ein Text beginnt
replace(...)Ersetzt einen Teil des Textes
Aufgaben nicht löschenSondern nur den Status ändern

Bonus-Ideen für dich

  • Zeige offene und erledigte Aufgaben getrennt
  • Lass Aufgaben durch wiederholtes Auswählen wieder offen machen (toggle)
  • Zähle, wie viele Aufgaben noch offen sind

Kommentare

Schreibe einen Kommentar

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