De standaardbibliotheek bestaat al · oefening
Samenvatten met statistics
Het overzicht weet nu wanneer activiteiten plaatsvonden en hoeveel er bij elke categorie horen. De derde taak is de sessieduren beschrijven.
“Gemiddeld” is te vaag om een API te kiezen. We willen twee benoemde samenvattingen:
het rekenkundig gemiddelde telt de waarden op en deelt door het aantal;
de mediaan is na sorteren de middelste waarde, of het gemiddelde van de twee middelste waarden als het aantal even is.
De module statistics biedt beide definities:
De lange sessie van 80 minuten trekt het gemiddelde omhoog. De mediaan beantwoordt een andere vraag en blijft tussen de twee middelste sessies. Geen van beide resultaten is altijd “het echte gemiddelde”; het rapport benoemt ze allebei zodat de lezer het verschil kan zien.
Bepaal het lege geval op de grens van het project
De documentatie zegt dat mean([]) en median([]) een StatisticsError opwerpen. Dat is een verstandig contract voor een algemene bibliotheek: er is geen universeel getal dat het midden van ontbrekende data voorstelt.
Voor ons project geeft summarize_minutes([]) None terug. Daarmee wordt “er is geen samenvatting” een expliciete waarde die build_briefing kan afhandelen. Let op de taakverdeling:
statisticsis verantwoordelijk voor de wiskundige bewerkingen;onze functie bepaalt wat een lege activiteitenlijst voor dit project betekent.
Vang niet elke exception rond de bibliotheekaanroepen op. Een record zonder de sleutel minutes of met ongeschikte gegevens is een ander gebrek. Dat verbergen zou de latere foutafhandeling moeilijker maken.
Waarom geeft het project bij een lege recordlijst None terug voordat het mean of median aanroept?
Voeg de samenvattingsfunctie toe aan hetzelfde bestand. Probeer zowel een oneven als een even aantal sessies, omdat de mediaan voor beide anders wordt bepaald. Probeer ook een lege lijst om je None terug te zien.
Opdracht
Implementeer summarize_minutes(records) in activity_report.py.
Geef direct
Noneterug wanneerrecordsleeg is.Verzamel anders de
minutes-waarde van elk record.Geef een dictionary terug met precies de sleutels
meanenmedian.Bereken die waarden met
statistics.meanenstatistics.median.
Behoud de waarden die de bibliotheekfuncties teruggeven. Rond ze niet af en zet ze niet om in weergavetekst; opmaak hoort bij het uiteindelijke overzicht.