Lektion 12 von 35Python
Python · Lektion 12 · 45 Minuten
Projekt: Quiz-Spiel
Das lernst du
- Daten als Liste von Dictionaries ordnen
- Antworten tolerant vergleichen und Punkte zählen
- Das Programm in Funktionen aufteilen
Daten gut ordnen
Ein Quiz besteht aus vielen Fragen, und jede Frage hat mehrere Teile: den Fragetext und die richtige Antwort. Dafür passt eine Liste von Dictionaries perfekt:
fragen = [
{"frage": "Größter Planet?", "antwort": "Jupiter"},
{"frage": "3 * 7?", "antwort": "21"},
]
print(len(fragen))
print(fragen[0]["frage"])
for f in fragen:
print(f["frage"], "→", f["antwort"])Neue Fragen kommen einfach als weiteres Dictionary in die Liste – der Rest des Programms bleibt gleich.
Tolerant vergleichen
„paris“, „Paris “ und „PARIS“ sollen alle als richtig zählen. Eine eigene Funktion macht das Programm übersichtlich – und du kannst sie einzeln testen:
def gleich(a, b):
return a.strip().lower() == b.strip().lower()
print(gleich(" Paris", "paris"))
print(gleich("Paris", "Berlin"))Mischen und weiterbauen
Mit random.shuffle() kommen die Fragen jedes Mal in einer anderen Reihenfolge:
import random
fragen = ["A", "B", "C", "D"]
random.shuffle(fragen)
print(fragen)Weiterbauen: Füge eine Zeitmessung hinzu (
import time,time.time()), vergib Bonuspunkte für Serien oder speichere den Highscore in einer Datei – wie in der Lektion über Dateien.
Deine Aufgabe
Jetzt bist du dran
Programmiere ein Quiz. Die Fragen stehen in der Liste fragen. Stelle jede Frage mit input(). Ist die Antwort richtig (Groß-/Kleinschreibung und Leerzeichen am Rand egal), gib Richtig! aus, sonst Falsch – richtig ist: Paris (mit der echten Antwort). Am Ende gib Ergebnis: 2 von 3 aus. Schreib dafür eine Funktion pruefe(eingabe, loesung), die True oder False zurückgibt.
fragen = [
{"frage": "Hauptstadt von Frankreich?", "antwort": "Paris"},
{"frage": "Wie viele Beine hat eine Spinne?", "antwort": "8"},
{"frage": "Welche Sprache lernst du gerade?", "antwort": "Python"},
]
def pruefe(eingabe, loesung):
pass
# Dein Quiz- Denkanstoß
Vergleiche
eingabe.strip().lower()mitloesung.lower()und gib das Ergebnis mitreturnzurück. - Welcher Befehl hilft?
Geh mit
fordurch die Liste fragen und zähle die Punkte mit.Bei falschen Antworten:
print(f"Falsch – richtig ist: {f['antwort']}")Schreib die Anzahl der Fragen nicht fest – nimm
len(fragen). - Lückencode – ergänze die ___
fragen = [ {"frage": "Hauptstadt von Frankreich?", "antwort": "Paris"}, {"frage": "Wie viele Beine hat eine Spinne?", "antwort": "8"}, {"frage": "Welche Sprache lernst du gerade?", "antwort": "Python"}, ] def pruefe(eingabe, loesung): return ___ punkte = ___ for f in ___: eingabe = ___ if ___: print(___) punkte += ___ else: print(___) print(___)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:
fragen = [
{"frage": "Hauptstadt von Frankreich?", "antwort": "Paris"},
{"frage": "Wie viele Beine hat eine Spinne?", "antwort": "8"},
{"frage": "Welche Sprache lernst du gerade?", "antwort": "Python"},
]
def pruefe(eingabe, loesung):
return eingabe.strip().lower() == loesung.lower()
punkte = 0
for f in fragen:
eingabe = input(f["frage"] + " ")
if pruefe(eingabe, f["antwort"]):
print("Richtig!")
punkte += 1
else:
print(f"Falsch – richtig ist: {f['antwort']}")
print(f"Ergebnis: {punkte} von {len(fragen)}")