Meilenstein 1: Sicherer Vokabeltrainer
Mission
Vokabeltrainer, der nicht abstürzt und Fortschritt speichern kann.
Anforderungen
- Dict mit mind. 5 Vokabeln
- random.choice
- Funktionen (fragen, prüfen, auswerten)
- sichere Zahlen-Eingabe falls nötig (Rundenanzahl)
- try/except wo sinnvoll
- optional: JSON-Fortschritt (Punkte/highscore)
- klare Endauswertung
Beispiellösung (Kern)
Lösung anzeigen
import random
import json
VOKABELN = {
"dog": "hund",
"cat": "katze",
"apple": "apfel",
"book": "buch",
"school": "schule"
}
PFAD = "vokabel_score.json"
def lies_int(text):
while True:
try:
return int(input(text))
except ValueError:
print("Bitte ganze Zahl.")
def frage_runde(en, de):
tipp = input(f"Was heisst '{en}'? ").strip().lower()
return tipp == de
def lade_best():
try:
with open(PFAD, "r", encoding="utf-8") as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
return {"best": 0}
def speichere_best(punkte):
data = lade_best()
if punkte > data.get("best", 0):
data["best"] = punkte
with open(PFAD, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2)
print("Neuer Highscore gespeichert!")
print("=== Sicherer Vokabeltrainer ===")
name = input("Name: ").strip().title()
runden = lies_int("Wie viele Runden? ")
punkte = 0
keys = list(VOKABELN.keys())
for i in range(runden):
en = random.choice(keys)
if frage_runde(en, VOKABELN[en]):
print("Richtig!")
punkte = punkte + 1
else:
print(f"Falsch. Loesung: {VOKABELN[en]}")
print(f"{name}: {punkte}/{runden}")
speichere_best(punkte)
print("Bestwert:", lade_best().get("best", 0))
Präsentation
- Wo ist Sicherheit?
- Welche Funktionen?
- Was speichert JSON?