Zum Hauptinhalt springen

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

  1. Wo ist Sicherheit?
  2. Welche Funktionen?
  3. Was speichert JSON?