De standaardbibliotheek bestaat al · eindproject
Eindproject: Eindopdracht: bouw het activiteitenoverzicht
Het project heeft vier werkende onderdelen:
days_betweenzet ISO-tekst om in datums en meet hun afstand;count_categoriesgeeft categoriefrequenties weer als een Counter;summarize_minutesgeeft het gemiddelde en de mediaan terug, ofNoneals er geen records zijn.format_category_countsmaakt van de Counter één alfabetische regel.
De eindopdracht geeft die onderdelen één publiek resultaat: build_briefing(records). Hier worden de bibliotheekkeuzes een bruikbaar programma in plaats van drie API-demonstraties.
Combineer de bewezen contracten
Neem niet aan dat het eerste record de vroegste datum heeft of het laatste record de laatste datum. Begin beide grenzen bij het eerste record, bezoek elk record en werk ze bij door te vergelijken. Dit project vereist datumstrings met vaste breedte in de vorm YYYY-MM-DD, waardoor hun tekstvolgorde overeenkomt met hun kalendervolgorde.
Roep daarna days_between(earliest, latest), format_category_counts(records) en summarize_minutes(records) aan. De eindopdracht brengt de resultaten samen; ze herhaalt niet het verwerken, tellen, sorteren of de statistiek.
Houd de taken van data en weergave zichtbaar
Geef bij niet-lege records precies vier regels terug:
Activity briefing
Dates: <earliest> to <latest> (<distance> days apart)
Categories: <alphabetical name=count pairs>
Minutes: mean=<mean>; median=<median>
Geef bij een lege lijst precies No activities recorded. terug. Er is geen datumbereik, categorielijst, gemiddelde of mediaan om te verzinnen.
main() drukt het overzicht af voor de klaargezette ACTIVITIES. De bewaking if __name__ == "__main__" betekent dat het uitvoeren van het bestand het rapport toont, terwijl importeren voor beoordeling of hergebruik stil blijft.
Zet de route van taak naar API in de volgorde die dit project gebruikt:
Sleep de opties in de juiste volgorde of gebruik de pijlknoppen.
Voeg de bewezen bewerking toe aan het project.
Probeer een klein voorbeeld.
Beschrijf de taak in gewone woorden.
Lees het contract voor invoer, terugkeerwaarde en fouten van het gekozen object.
Zoek een waarschijnlijke module uit de standaardbibliotheek.
Welke taakverdeling past bij het voltooide project?
Maak het bestand af, voer het uit en lever het in.
Zet eerst nog ACTIVITIES in een andere volgorde en voer het nogmaals uit. Het overzicht hoort identiek te zijn. Elk onderdeel van dit hoofdstuk is daarop ingericht.
Opdracht
Maak activity_report.py af.
Implementeer build_briefing(records) met dit contract:
geef
No activities recorded.terug voor een lege lijst;zoek de vroegste en laatste ISO-datum zonder uit te gaan van de invoervolgorde;
roep
days_between,format_category_countsensummarize_minutesaan in plaats van hun taken te herhalen;geef precies de indeling met vier regels uit de les terug.
Implementeer vervolgens main() zodat die build_briefing(ACTIVITIES) afdrukt. Behoud de klaargezette bewaking if __name__ == "__main__". Het bestand uitvoeren hoort het voorbeeldoverzicht te tonen; importeren hoort alleen de herbruikbare functies beschikbaar te maken.