Gegevens bewerken en combineren · eindproject
Eindproject: Project: normaliseer pogingen, rangschik ze en vat ze samen
Dit hoofdstuk ontwikkelde meerdere manieren om verzamelingen te bewerken en samen te vatten. Het project combineert die nu om poginggegevens te verwerken die als nog niet opgeschoonde strings binnenkomen.
Het programma voert die gegevens door een stroom met drie stappen:
Normaliseer waarden naar één consistente vorm.
Rangschik pogingen op score en voltooiingstijd.
Vat de genormaliseerde verzameling samen.
Elke stap ontvangt het resultaat van de vorige stap en geeft een nieuwe waarde terug. De oorspronkelijke ruwe records blijven ongewijzigd, zodat elke stap afzonderlijk kan worden begrepen en gecontroleerd.
Normaliseer
Ruwe records bevatten strings:
{
"learner": " mina ",
"score": "8",
"total": "10",
"seconds": "75",
}
Schoon een cursistnaam op
Je weet al dat .strip() witruimte aan de buitenkant verwijdert:
Dit drukt mina jansen af. De oorspronkelijke string blijft ongewijzigd.
Normaliseer elke cursistnaam met strip() en zet numerieke velden om met int().
Rangschik
Gebruik een tuplesleutel:
(-attempt["score"], attempt["seconds"])
Hogere scores komen eerst. Bij gelijke scores beslist de kortere voltooiingstijd.
Vat samen
De samenvatting rapporteert:
count: het aantal pogingen;points: de som van de scores;lowestenhighest;has_perfect: of een score gelijk is aan het bijbehorende totaal;all_complete: of elk record een niet-negatieve voltooiingstijd heeft.
Voor een lege lijst zijn de punten nul, zijn laagste en hoogste None en zijn beide voorwaarderesultaten False.
Zet de bewerkingen in een veilige volgorde:
Sleep de opties in de juiste volgorde of gebruik de pijlknoppen.
Bereken de samenvatting.
Zet ruwe strings om in genormaliseerde waarden.
Rangschik de genormaliseerde records.
Haal scores en booleaanse controles op.
Toon de teruggegeven resultaten.
Houd stappen onafhankelijk
Afgeschermde controles roepen elke functie met nog niet getoonde gegevens aan. Combineer niet al het werk in het zichtbare voorbeeld op het hoogste niveau. Kleine publieke functies laten latere programma’s normaliseren, rangschikken of samenvatten afzonderlijk hergebruiken.
Dit is de laatste verwerkingsstroom met dictionaries voordat hoofdstuk 4 objecten introduceert.
Opdracht
Maak de drie projectfuncties af.
normalize_attempts:
Geef nieuwe dictionaries terug die witruimte aan de buitenkant van cursistnamen verwijderen zonder hoofdletters te veranderen en numerieke velden in gehele getallen omzetten.
Verander de ruwe invoer niet.
rank_attempts:
Geef een nieuwe lijst terug, gesorteerd op aflopende score en daarna oplopende seconden.
summarize_attempts:
Geef de zes vastgelegde velden terug.
Gebruik
sum,min,max,anyenall.Bouw de verzamelingen met scores en booleaanse waarden met leesbare list comprehensions.
Gebruik de truthiness van de lijst om een lege lijst met de vastgelegde waarden af te handelen.
Het meegeleverde programma normaliseert eerst en rangschikt en vat daarna samen.