Bis jetzt hast du Aufgaben als einfachen Text gespeichert:
"[ ] Python lernen"
"[x] Müll rausbringen"
Das hat funktioniert, aber:
- Es ist nicht so flexibel
- Der Status ist nur „reingetrickst“
- Es ist schwer, damit später mehr zu machen (z. B. sortieren, filtern…)
Jetzt machst du es richtig – mit Datenstrukturen.
Was ist ein dict
?
Ein dict
ist ein Wörterbuch in Python: ein kleines Paket aus Schlüssel und Wert.
Beispiel:
aufgabe = {"text": "Python lernen", "erledigt": False}
Du kannst auf die Teile zugreifen wie so:
print(aufgabe["text"]) # → Python lernen
print(aufgabe["erledigt"]) # → False
🎯 Ziel dieses Teils
- Du speicherst jede Aufgabe als
dict
mit Text + Status - Du zeigst die Aufgaben sauber an
- Du kannst Aufgaben als „erledigt“ markieren (Status ändern)
Schritt 1: Aufgabenliste vorbereiten
aufgaben = []
Aber jede Aufgabe in dieser Liste sieht jetzt so aus:
{"text": "Wäsche waschen", "erledigt": False}
Schritt 2: Neue Aufgabe erstellen
Vorher:
aufgaben.append("[ ] Neue Aufgabe")
Jetzt:
def neue_aufgabe_eingeben():
text = input("Was möchtest du erledigen? ")
return {"text": text, "erledigt": False}
Und verwenden:
aufgabe = neue_aufgabe_eingeben()
aufgaben.append(aufgabe)
Schritt 3: Aufgaben anzeigen
Du willst etwas sehen wie:
1. [ ] Wäsche waschen
2. [x] Müll rausbringen
Also:
def aufgaben_anzeigen():
if not aufgaben:
print("🎉 Keine Aufgaben!")
else:
print("\n📝 Deine Aufgaben:")
for i in range(len(aufgaben)):
aufgabe = aufgaben[i]
status = "[x]" if aufgabe["erledigt"] else "[ ]"
print(f"{i + 1}. {status} {aufgabe['text']}")
Schritt 4: Aufgabe als erledigt markieren
Vorher hast du mit replace()
im Text gearbeitet.
Jetzt kannst du direkt den Status ändern:
def aufgabe_abhaken():
if not aufgaben:
print("⚠️ Keine Aufgaben.")
return
try:
nummer = int(input("Welche Nummer ist erledigt? ")) - 1
if 0 <= nummer < len(aufgaben):
if aufgaben[nummer]["erledigt"]:
print("ℹ️ Diese Aufgabe ist schon erledigt.")
else:
aufgaben[nummer]["erledigt"] = True
print("✅ Aufgabe abgehakt.")
else:
print("⚠️ Ungültige Nummer.")
except ValueError:
print("⚠️ Bitte gib eine Zahl ein.")
Schritt 5: Speichern und Laden (jetzt mit json
)
Weil du jetzt keine einfachen Texte mehr speicherst, brauchst du ein neues Format: JSON
Speichern:
import json
def aufgaben_speichern():
with open("aufgaben.json", "w", encoding="utf-8") as datei:
json.dump(aufgaben, datei, ensure_ascii=False, indent=2)
Laden:
def aufgaben_laden():
global aufgaben
try:
with open("aufgaben.json", "r", encoding="utf-8") as datei:
aufgaben = json.load(datei)
except FileNotFoundError:
aufgaben = []
💡 json
ist ein Dateiformat für strukturierte Daten – es passt perfekt zu Python-dict
s und Listen.
Der vollständige Ablauf (Kernausschnitt)
import json
DATEINAME = "aufgaben.json"
aufgaben = []
def aufgaben_laden():
global aufgaben
try:
with open(DATEINAME, "r", encoding="utf-8") as f:
aufgaben = json.load(f)
except FileNotFoundError:
aufgaben = []
def aufgaben_speichern():
with open(DATEINAME, "w", encoding="utf-8") as f:
json.dump(aufgaben, f, ensure_ascii=False, indent=2)
def neue_aufgabe_eingeben():
text = input("Was möchtest du erledigen? ")
return {"text": text, "erledigt": False}
def aufgaben_anzeigen():
if not aufgaben:
print("🎉 Keine Aufgaben!")
else:
print("\n📝 Deine Aufgaben:")
for i in range(len(aufgaben)):
aufgabe = aufgaben[i]
status = "[x]" if aufgabe["erledigt"] else "[ ]"
print(f"{i + 1}. {status} {aufgabe['text']}")
def aufgabe_abhaken():
if not aufgaben:
print("⚠️ Keine Aufgaben.")
return
try:
nummer = int(input("Welche Nummer ist erledigt? ")) - 1
if 0 <= nummer < len(aufgaben):
if aufgaben[nummer]["erledigt"]:
print("ℹ️ Diese Aufgabe ist schon erledigt.")
else:
aufgaben[nummer]["erledigt"] = True
print("✅ Aufgabe abgehakt.")
else:
print("⚠️ Ungültige Nummer.")
except ValueError:
print("⚠️ Bitte gib eine Zahl ein.")
def hauptmenü():
while True:
print("\nWas möchtest du tun?")
print("1 - Neue Aufgabe hinzufügen")
print("2 - Aufgaben anzeigen")
print("3 - Aufgabe abhaken")
print("4 - Beenden")
wahl = input("👉 Auswahl: ")
if wahl == "1":
aufgabe = neue_aufgabe_eingeben()
aufgaben.append(aufgabe)
aufgaben_speichern()
elif wahl == "2":
aufgaben_anzeigen()
elif wahl == "3":
aufgabe_abhaken()
aufgaben_speichern()
elif wahl == "4":
print("Tschüss! 👋")
break
else:
print("⚠️ Ungültige Eingabe.")
# Programmstart
aufgaben_laden()
hauptmenü()
Was du heute gelernt hast
Konzept | Bedeutung |
---|---|
dict | Aufgabe mit Text + Status |
json | Format zum Speichern strukturierter Daten |
json.dump() | Daten speichern |
json.load() | Daten laden |
Zugriff auf Werte | aufgabe["text"] , aufgabe["erledigt"] |
Vorteil | Du kannst später einfach mehr Infos hinzufügen (z. B. Kategorie, Fällig am, Priorität…) |
Bonus-Ideen für dich
- Erlaube das Zurücksetzen (markiere erledigte Aufgabe wieder als offen)
- Zeige Anzahl offener und erledigter Aufgaben
- Speichere Datum, wann eine Aufgabe hinzugefügt wurde (
datetime
)
Schreibe einen Kommentar