Ein Programm über mehrere Dateien organisieren · Abschlussprojekt
Abschlussprojekt: Projekt: Die Quizanwendung in Module aufteilen
Das Kapitel begann mit sechzig Zeilen in einer Datei. Es endet mit einem Projekt, dessen Struktur du lesen kannst.
Die fertige Struktur
quizapp/ the application package
__init__.py
models.py Question, Quiz, Attempt
scoring.py percentage, grade_letter, is_pass
report.py interface: facts turned into text
main.py entry point: what running this does
Drei Schichten, und die Abhängigkeiten zeigen nur nach unten. main.py verwendet die Modelle und den Bericht des Pakets. quizapp.report verwendet die Bewertung, diese verwendet Modelle für is_pass, und die Modelle importieren nichts darüber. Ein Paket gruppiert die Module, hebt aber ihre getrennten Verantwortlichkeiten nicht auf.
Die Dateien models.py, scoring.py und report.py auf oberster Ebene aus der Kapitelmitte werden durch die Paketversionen ersetzt. Du kannst sie in der Dateiansicht löschen. Das fertige Programm importiert sie nicht.
Jemand öffnet main.py und liest nur die Importzeilen. Was sollte daraus hervorgehen?
Was geprüft wird
main.pyimportiert seine Domäne und seinen Bericht ausquizapp, nicht aus den ersetzten Kopien auf oberster Ebene.Es definiert
main()und ruft es nur hinter der Schutzabfrage auf.Sein Import erzeugt keine Ausgabe.
Das Programm gibt eine Überschrift, die Zeile mit dem Punktestand und die Zeile mit der Note in dieser Reihenfolge aus.
Nur main.py muss sich ändern. Alles, worauf es zugreift, ist bereits im Projekt vorhanden, geschrieben oder vorgegeben in den letzten sechs Lektionen.
Fertigstellen
Wenn es läuft, lies main.py von oben und frage, was eine neue Person aus jeder Zeile lernt. Zwei Importzeilen, der Quizaufbau, die Hauptfunktion und eine Schutzabfrage. Kann jemand allein daraus die Programmstruktur beschreiben, ohne zu scrollen, hat das Kapitel seine Aufgabe erfüllt.
Kapitel 11 verlässt das Projekt wieder und kehrt zu einzelnen Dateien zurück. Das Iterationsprotokoll lässt sich am leichtesten an zehn Zeilen ohne Ablenkung sehen. Kapitel 13 beginnt eine neue verwandte Quiz-Arbeitsumgebung für Tests. Kapitel 14 verwendet Module für das Bibliotheksabschlussprojekt. Deine Dateien bleiben in diesem Kapitel gespeichert. Es lohnt sich deshalb, sie ordentlich zu hinterlassen.
Aufgabe
Verbinde das fertige Projekt in main.py.
Importiere Attempt, Question und Quiz aus quizapp.models sowie headline und report_lines aus quizapp.report. Importiere nicht die ersetzten Module models, scoring oder report auf oberster Ebene.
Entferne die alte Definition von report_lines aus main.py, damit sie die importierte Funktion nicht überschreibt. Vorhandene Dateien behalten beim Öffnen dieser Lektion deinen früheren Code.
Behalte build_quiz(), das das Quiz Chapter 10 Review zusammenstellt: „Which keyword starts a function?“ mit der Antwort def für 2 Punkte und „Which keyword defines a class?“ mit der Antwort class für 3 Punkte.
main() baut das Quiz auf, erzeugt einen Versuch für Mina, beantwortet jede Frage mit "def" und gibt die Überschrift gefolgt von den Berichtszeilen aus. Beim Import läuft keine Arbeit, und die Datei endet mit der Schutzabfrage.
Gib die Lösung ab, wenn die Ausführung Folgendes ausgibt:
Chapter 10 Review (5 points)
Mina: 2 of 5
Grade: F