Zum Inhalt springen
BetaEN
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

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

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)}")