Gegevens bewerken en combineren · oefening
Pak samenhangende waarden uit
De vorige les introduceerde tuples als kleine, geordende groepen met vaste waarden. De resultaattuple hield een cursistnaam, score en totaal bij elkaar:
result = ("Mina", 8, 10)
Een functie kan nog een record met drie items bouwen en teruggeven:
def lesson_values(lesson):
return (
lesson["title"],
lesson["chapter"],
lesson["minutes"],
)
Eén variabele kan de volledige teruggegeven tuple ontvangen:
details = lesson_values(lesson)
Indexeren werkt, maar de betekenis van elke positie is niet zichtbaar:
print(details[0], details[1], details[2])
Wanneer we de afzonderlijke waarden nodig hebben, wijst uitpakken hun posities in één stap toe aan beschrijvende namen:
title, chapter, minutes = lesson_values(lesson)
print(f"Chapter {chapter}: {title} ({minutes} minutes)")
Python neemt het eerste item voor title, het tweede voor chapter en het derde voor minutes. De oefening past dezelfde techniek toe op de quizresultaattuple uit de vorige les.
De vormen moeten overeenkomen
Het aantal namen moet overeenkomen met het aantal waarden:
score, total = (8, 10)
Te veel of te weinig namen veroorzaken een ValueError. Die strengheid is handig wanneer de tuple een bekende vorm heeft. Een verschil laat zien dat de aanroeper en de functie het niet meer eens zijn.
Uitpakken werkt ook direct in een lus:
Wat drukt dit af?
point = (3, 7)
x, y = point
print(y)Maak één resultaattuple op
Maak format_result af door de tuple met drie items uit te pakken. Gebruik de namen in de gevraagde volgorde en geef een leesbare scoreregel terug.
Opdracht
Maak format_result af.
Pak
resultuit inlearner,scoreentotal.Geef
learner: score/totalterug.Benader de tuple niet met numerieke indexen.
De afgeschermde controles geven een nieuwe tuple met drie items mee.