0%

Daten umformen und verbinden · Übung

Fasse aussagekräftige Daten zusammen

Die vorige Lektion hat Versuchsdatensätze in eine nützliche Reihenfolge gebracht. Ein Programm braucht oft eine weitere Sicht auf dieselbe Sammlung: einige Angaben wie die Summe, die niedrigste und die höchste Punktzahl.

Wir könnten jede Angabe mit einer Schleife berechnen, aber Python bietet bereits gezielte Zusammenfassungsfunktionen für Zahlenwerte:

scores = [8, 6, 9]

sum(scores)  # 23
min(scores)  # 6
max(scores)  # 9

Ihre Namen benennen das gewünschte Ergebnis direkt. So bleibt der Zweck der Berechnung sichtbar.

Wähle zuerst die passenden Daten aus

Ein Versuchsdatensatz enthält mehrere Zahlen:

{
    "score": 8,
    "total": 10,
    "seconds": 75,
}

Übergib keine vollständigen Dictionarys an numerische Zusammenfassungsfunktionen. Sammle zuerst das Feld, das die Frage beantwortet:

scores = []
for attempt in attempts:
    scores.append(attempt["score"])

Fasse dann scores zusammen.

Entscheide, was eine leere Sammlung bedeutet

sum([]) gibt 0 zurück, aber min([]) und max([]) lösen einen ValueError aus, weil es kein kleinstes oder größtes Element gibt.

Der Vertrag deiner Funktion muss eine Bedeutung festlegen. In dieser Lektion liefert eine leere Versuchsliste Folgendes zurück:

{
    "total": 0,
    "lowest": None,
    "highest": None,
}

None macht ausdrücklich sichtbar, dass keine niedrigste oder höchste Punktzahl vorhanden ist.

Die leere Liste gilt als falsch, daher kann die Funktion sie direkt behandeln:

if not scores:
    return {
        "total": 0,
        "lowest": None,
        "highest": None,
    }

Warum sollte lowest bei einer leeren Punkteliste None sein?

Fasse die Punktzahlen von Versuchen zusammen

Erstelle eine Liste mit Punktwerten. Gib die Summe, die niedrigste und die höchste Punktzahl zurück und verwende bei einer leeren Liste das dokumentierte Ergebnis.

Aufgabe

Vervollständige score_summary.

  • Sammle score aus jedem Versuch.

  • Gib für eine leere Liste total: 0, lowest: None und highest: None zurück.

  • Verwende andernfalls sum, min und max.

  • Gib ein neues Dictionary mit der Zusammenfassung zurück.

Verändere die Versuchsdatensätze nicht.