Programme planen, bauen und testen · Abschlussprojekt
Abschlussprojekt: Projekt: Bereite dein Quizprogramm vor
Das Quizprogramm war während dieses Kapitels unsere Werkbank. In Kapitel 12 wird daraus das abschließende Projekt mit einem Thema deiner Wahl. Bevor du die interaktive Schleife und den Punktebericht baust, fasse die vertrauten Datenregeln und die kleinsten wiederverwendbaren Verhaltensweisen in einem Bauplan zusammen.
So wird ein größeres Projekt handhabbar. Du baust nicht auf einmal „ein Quizprogramm“. Du vervollständigst einen getesteten Bauplan mit klaren Grenzen, einen Teil nach dem anderen.
Schreibe die Projektbeschreibung
Das fertige Programm wird:
einen Quiztitel und mindestens drei Fragedatensätze speichern;
jede Frage stellen;
Antworten vergleichen und dabei Groß- und Kleinschreibung sowie umgebende Leerzeichen ignorieren;
die Punktzahl mitführen und anzeigen;
eine leere Antwort ablehnen und dieselbe Frage erneut stellen;
nach der letzten Frage ordentlich enden.
Dieses Kapitel bereitet den gespeicherten Plan, die Hilfsfunktionen zum Antwortvergleich und eine Prüfung vor, ob der Plan bereit ist. Kapitel 12 ergänzt das Stellen der Fragen, das Mitführen der Punktzahl und den abschließenden Bericht.
Modelliere eine Frage
Jeder Fragedatensatz hat dieselben erforderlichen Schlüssel:
{
"prompt": "Which material do bees make?",
"answer": "honey",
}
Der Fragetext ist das, was die lernende Person sieht. Die Antwort ist der Wert, der für den Vergleich verwendet wird.
Speichere die Datensätze in einer Liste und setze diese Liste zusammen mit dem Titel in ein Dictionary:
quiz_plan = {
"title": "A Subject You Choose",
"questions": [
# consistently shaped question dictionaries
],
}
Diese Struktur kann direkt in das Abschlussprojekt übernommen werden.
Formuliere die Antwortregel einmal
Die Vergleichsregel lautet:
Ignoriere Groß- und Kleinschreibung sowie umgebende Leerraumzeichen. Ansonsten muss die vollständige Antwort übereinstimmen.
Setze die Bereinigung in eine Funktion und den Vergleich in eine andere. Dann verwendet jede Frage dieselbe Regel.
Teste beide Wege:
Versionen derselben Antwort mit anderer Groß- und Kleinschreibung und zusätzlichen Leerzeichen stimmen überein;
eine tatsächlich andere Antwort stimmt nicht überein.
Validiere den Plan selbst
Ein Bauplan ist erst bereit, wenn:
sein Titel nicht leer ist;
er mindestens drei Fragen enthält;
jede Frage einen nicht leeren Fragetext und eine nicht leere Antwort hat;
die Fragetexte nach dem Bereinigen eindeutig sind.
Eine Funktion plan_is_ready(plan) kann diese Anforderungen prüfen, bevor sich das interaktive Programm auf die Daten verlässt.
Gehe für diese Prüfung davon aus, dass der äußere Plan bereits einen String "title" und eine Liste "questions" mit Dictionarys enthält und dass vorhandene Frage- und Antwortwerte Strings sind. Prüfe innerhalb dieser Grenze die genannten Regeln für Inhalt und Datensatzstruktur.
Das validiert Daten, die bei der Entwicklung erstellt wurden, keine echten Nutzereingaben. Hier reicht es, True oder False zurückzugeben. Kapitel 12 verwendet eine Wiederholungsschleife für die Person, die das Quiz macht.
Behalte dein eigenes Thema
Wähle ein Thema, zu dem du sachlich richtige Fragen schreiben kannst. Das könnten Musik, Gartenarbeit, Geografie, Handwerk, Sport, Geschichte, Kochen, Filme, Wissenschaft oder etwas anderes sein.
Die automatische Bewertung prüft die Struktur und das Verhalten, nicht ein bestimmtes vorgegebenes Thema. Deine Fragen und Antworten sollten sinnvoll und verschieden sein.
Wenn du diese Lektion bestehst, behalte den Bauplan. Der erste Meilenstein in Kapitel 12 fordert dich auf, quiz_plan, clean_answer und answers_match daraus in den dauerhaften Arbeitsbereich des Abschlussprojekts zu übernehmen.
Welcher Teil gehört zu diesem Bauplan-Meilenstein und nicht zur späteren interaktiven Quizschleife?
Was sollte answers_match(" PACIFIC ", "pacific") nach der geplanten Regel zurückgeben?
Aufgabe
Bereite einen persönlichen Bauplan für ein Quizprogramm vor.
Ersetze den Platzhaltertitel und alle drei Platzhalter-Fragedatensätze durch ein eigenes Thema und sachlich richtige Fragen. Du darfst weitere Fragen hinzufügen.
Implementiere
clean_answer(text)so, dass es umgebende Leerraumzeichen entfernt und die Groß- und Kleinschreibung ignoriert.Implementiere
answers_match(given, expected)mithilfe vonclean_answer.Implementiere
plan_is_ready(plan)anhand dieses Vertrags:nicht leerer Titel;
mindestens drei Fragen;
jede Frage hat genau die erforderlichen Felder
"prompt"und"answer"mit nicht leerem Text;die Fragetexte sind nach dem Bereinigen eindeutig.
Behalte die vorbereiteten Zusicherungen und die Bauplanzusammenfassung bei.
Den genauen Titel und die Fragen wählst du selbst. Die endgültige Ausgabe muss diese Form haben:
QUIZ BLUEPRINT
Title: your chosen title
Questions: 3
Answer checks passed.
Die Zahl darf größer als 3 sein, wenn du weitere Fragen hinzufügst.