0%

Daten umformen und verbinden · Übung

Entpacke zusammengehörige Werte

Die vorige Lektion hat Tupel als kleine, geordnete Gruppen mit festem Aufbau vorgestellt. Ihr Ergebnistupel hielt den Namen einer lernenden Person, die Punktzahl und die Gesamtzahl zusammen:

result = ("Mina", 8, 10)

Eine Funktion kann einen weiteren Datensatz mit drei Elementen bauen und zurückgeben:

def lesson_values(lesson):
    return (
        lesson["title"],
        lesson["chapter"],
        lesson["minutes"],
    )

Eine Variable kann das gesamte zurückgegebene Tupel erhalten:

details = lesson_values(lesson)

Der Zugriff über Indizes funktioniert, aber die Bedeutung jeder Position ist nicht sichtbar:

print(details[0], details[1], details[2])

Wenn wir die einzelnen Werte verwenden müssen, weist Entpacken ihre Positionen in einem Schritt beschreibenden Namen zu:

title, chapter, minutes = lesson_values(lesson)
print(f"Chapter {chapter}: {title} ({minutes} minutes)")

Python nimmt das erste Element für title, das zweite für chapter und das dritte für minutes. Die Übung wendet dieselbe Technik auf das Quizergebnistupel aus der vorigen Lektion an.

Die Strukturen müssen zusammenpassen

Die Anzahl der Namen muss der Anzahl der Werte entsprechen:

score, total = (8, 10)

Zu viele oder zu wenige Namen lösen einen ValueError aus. Diese Strenge ist nützlich, wenn das Tupel einen bekannten Aufbau hat. Eine Abweichung zeigt, dass Aufrufer und Funktion nicht mehr übereinstimmen.

Entpacken funktioniert auch direkt in einer Schleife:

Try it

Was gibt dieser Code aus?

point = (3, 7)
x, y = point
print(y)

Formatiere ein Ergebnistupel

Vervollständige format_result, indem du sein Tupel mit drei Elementen entpackst. Verwende die Namen in der geforderten Reihenfolge und gib eine lesbare Zeile mit der Punktzahl zurück.

Aufgabe

Vervollständige format_result.

  • Entpacke result in learner, score und total.

  • Gib learner: score/total zurück.

  • Greife nicht mit numerischen Indizes auf das Tupel zu.

Die verdeckten Prüfungen übergeben ein neues Tupel mit drei Elementen.