Konzepterklärung
Diese Lektion führt die ersten Setup-Lektionen zu einem kleinen, vollständigen Skript zusammen. Sie haben bereits geübt, Dateien auszuführen, Syntaxfehler zu beheben, Fehler zu debuggen, zu refaktorisieren, einfache Hilfsfunktionen zu testen und Daten von der Präsentation zu trennen. Jetzt wenden Sie diese Gewohnheiten an einem Ort an. Das Skript in dieser Lektion ist absichtlich klein gehalten. Das macht es so nützlich. Ein Anfängerprojekt sollte einfach auszuführen, leicht zu lesen und ohne Bedenken zu ändern sein. Wenn ein Teamkollege diese Datei morgen öffnen würde, sollte er in weniger als einer Minute verstehen, was sie tut. Hier erstellen Sie einen winzigen Profil-Formatter, der Beispieldatensätze erzeugt, prüft, ob die Daten plausibel sind, und eine saubere Ausgabe druckt. Nichts Besonderes. Einfach ein Skript, das sich wie ein echtes Miniprojekt anfühlt, anstatt einer isolierten Übung. Am Ende dieser Lektion sollten Sie in der Lage sein: • zu erklären, wie Datenerstellung, Validierung und Rendering in einer Datei zusammenwirken, • ein Miniprojekt von oben nach unten auszuführen, ohne zu raten, was als Nächstes passiert, • die genaue Stelle zu benennen, an der zukünftige Funktionen wie CLI-Argumente oder JSON-Export hinzugefügt würden. Warum das wichtig ist: Echtes Lernen findet statt, wenn separate Konzepte aufhören, sich getrennt anzufühlen, und beginnen, in einem Programm zusammenzuarbeiten.
Wo der Code hingehört
- Definieren Sie Farb- und Positionsvariablen oben.
- Erstellen Sie die Logik zum Zeichnen oder Platzieren von Formen in der Mitte.
- Rendern Sie die Ausgabe (Druck, Canvas, SVG oder gestylter Block) am Ende.
Befehlsreferenz
- Halten Sie den Modul-Docstring praktisch, damit eine andere Person sofort weiß, wie die Datei ausgeführt wird.
- Verwenden Sie eine kleine Validierungsfunktion vor dem Drucken, damit offensichtlich fehlerhafte Daten frühzeitig scheitern.
- Lassen Sie `render_profile()` einen String zurückgeben; das macht die Formatierung einfach zu testen und wiederzuverwenden.
- Behandeln Sie `main()` als den letzten Montageschritt, in dem das Projekt zusammenkommt.
Schritt-für-Schritt-Anleitung
- Führen Sie das Skript genau wie im oberen Docstring beschrieben aus und bestätigen Sie, dass jedes Profil in einer eigenen Zeile gedruckt wird.
- Fügen Sie ein weiteres Profil hinzu und prüfen Sie, ob die Gold-versus-Standard-Regel immer noch wie erwartet funktioniert.
- Geben Sie einem Profil vorübergehend eine negative Punktzahl, lesen Sie die Assertionsmeldung und stellen Sie dann die Daten wieder her.
- Ändern Sie die Formatierung in `render_profile()`, ohne `build_profiles()` oder `validate_profiles()` zu berühren.
- Schreiben Sie einen Satz, der beschreibt, wo Sie Befehlszeilenargumente hinzufügen würden, wenn dieses Projekt später echte Eingaben akzeptieren soll.
Übungsaufgaben
- Vergleichen Sie diese dataclass-basierte Version mit der vorherigen TypedDict-Lektion. Welche fühlt sich für ein kleines Projekt sauberer an und warum?
- Fügen Sie eine Funktion hinzu, die das Profil mit der höchsten Punktzahl zurückgibt, ohne die Funktionsweise des Renderings zu ändern.
- Schreiben Sie eine kurze Notiz, die erklärt, warum die Validierung vor der Druckschleife und nicht danach erfolgen sollte.
Coding-Challenges
- Fügen Sie eine JSON-Exportfunktion hinzu, die die Profile in Dictionaries umwandelt, während der Text-Renderer unverändert bleibt.
- Sortieren Sie die Profile nach Punkten, bevor Sie sie drucken, und stellen Sie sicher, dass der Rest der Datei weiterhin sauber lesbar ist.
Kleine Übungsaufgaben
- Speichern Sie diese Datei als persönliches Miniprojekt, nicht nur als Lektionsübung.
- Schreiben Sie eine Zeile in Ihre Notizen: Dies ist das erste Skript, in dem mehrere Python-Ideen zusammenarbeiten.
- Lesen Sie die Datei einmal von oben nach unten, ohne sie auszuführen, und prüfen Sie, ob der Ablauf offensichtlich ist.
Häufiger Fehler
Mixing x and y axes or using wrong coordinate origin causes shapes to appear in unexpected places.
Mini-Challenge aus der Praxis
Draw one square, one triangle, and one circle, then move X marker 2 steps right and 1 step down.