Die Standardbibliothek gibt es bereits · Abschlussprojekt
Abschlussprojekt: Abschlussprojekt: Die Aktivitätsübersicht erstellen
Das Projekt hat vier funktionierende Teile:
days_betweenwandelt ISO-Text in Datumswerte um und misst deren Abstand;count_categoriesstellt Kategoriehäufigkeiten als Counter dar;summarize_minutesgibt Mittelwert und Median zurück oder bei fehlenden DatensätzenNone.format_category_countsmacht aus dem Counter eine alphabetisch sortierte Zeile.
Das Abschlussprojekt gibt diesen Teilen ein gemeinsames öffentliches Ergebnis: build_briefing(records). Hier werden ausgewählte Bibliotheksfunktionen zu einem nützlichen Programm statt zu drei API-Vorführungen.
Die bewährten Vereinbarungen zusammensetzen
Nimm nicht an, dass der erste Datensatz das früheste Datum und der letzte das späteste enthält. Initialisiere beide Grenzen mit dem ersten Datensatz, gehe alle Datensätze durch und aktualisiere sie durch Vergleiche. Dieses Projekt verlangt Datumsstrings mit fester Breite im Format YYYY-MM-DD. Deshalb stimmt ihre Textreihenfolge mit ihrer Kalenderreihenfolge überein.
Rufe anschließend days_between(earliest, latest), format_category_counts(records) und summarize_minutes(records) auf. Das Abschlussprojekt führt ihre Ergebnisse zusammen; es wiederholt nicht das Einlesen, Zählen, Sortieren oder die Statistik.
Aufgaben für Daten und Darstellung sichtbar halten
Gib bei nicht leeren Datensätzen genau vier Zeilen zurück:
Activity briefing
Dates: <earliest> to <latest> (<distance> days apart)
Categories: <alphabetical name=count pairs>
Minutes: mean=<mean>; median=<median>
Gib bei einer leeren Liste genau No activities recorded. zurück. Es gibt keinen Datumsbereich, keine Kategorieliste, keinen Mittelwert und keinen Median zu erfinden.
main() gibt die Übersicht für die vorbereiteten ACTIVITIES aus. Die Bedingung if __name__ == "__main__" sorgt dafür, dass das Ausführen der Datei den Bericht anzeigt, während ein Import zum Prüfen oder Wiederverwenden ohne Ausgabe bleibt.
Bringe den Weg von der Aufgabe zur API in die Reihenfolge, die dieses Projekt verwendet:
Ziehe die Optionen in die richtige Reihenfolge oder verwende die Pfeiltasten.
Die Vereinbarung des ausgewählten Objekts zu Eingaben, Rückgabe und Fehlern lesen.
Ein winziges Beispiel ausprobieren.
Die Aufgabe in gewöhnlichen Worten beschreiben.
Ein wahrscheinlich passendes Modul der Standardbibliothek finden.
Die bewährte Operation ins Projekt einbauen.
Welche Aufgabenteilung passt zum fertigen Projekt?
Vervollständige die Datei, führe sie aus und reiche ein.
Bringe vorher ACTIVITIES in eine andere Reihenfolge und führe das Programm noch einmal aus. Die Übersicht sollte identisch bleiben. Jeder Teil dieses Kapitels wurde genau dafür gebaut.
Aufgabe
Vervollständige activity_report.py.
Implementiere build_briefing(records) mit diesem Vertrag:
gib bei einer leeren Liste
No activities recorded.zurück;finde das früheste und späteste ISO-Datum, ohne eine Eingabereihenfolge vorauszusetzen;
rufe
days_between,format_category_countsundsummarize_minutesauf, statt ihre Aufgaben zu wiederholen;gib genau das in der Lektion gezeigte vierzeilige Format zurück.
Implementiere dann main() so, dass es build_briefing(ACTIVITIES) ausgibt. Behalte die vorbereitete Bedingung if __name__ == "__main__" bei. Beim Ausführen sollte die Datei die Beispielübersicht anzeigen; beim Importieren sollte sie nur ihre wiederverwendbaren Funktionen verfügbar machen.