0%

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:

  1. Normaliseer waarden naar één consistente vorm.

  2. Rangschik pogingen op score en voltooiingstijd.

  3. 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:

Try it

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;

  • lowest en highest;

  • 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, any en all.

  • 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.