Kluisjes met naamkaartjes
Een lijst is een rij bekertjes met nummers. Een dictionary is een kast met kluisjes, en op elk kluisje staat een naam. Je zoekt niet op plek, maar op naam. Jullie spelen de kast na.
Wat je nodig hebt
- Per tweetal vijf enveloppen (de kluisjes), briefjes en een pen.
- Ongeveer 15 minuten.
De spelregels
kluis["Sam"]: zoek de envelop metSamerop en kijk wat erin zit. Is er geen envelop met die naam, dan stopt Python met eenKeyError.kluis["Ali"] = "pen": is er al een envelopAli? Vervang wat erin zit. Zo niet, schrijfAliop een nieuwe envelop en stop erpenin."Bo" in kluis: is er een envelop metBoerop? Dan is hetTrue. Je opent niets..items(): loop de enveloppen langs, in de volgorde waarin ze erbij kwamen, en lees steeds de naam en wat erin zit.
Speel het programma
kluis = {"Sam": "gum", "Noor": "boek"}
kluis["Ali"] = "pen"
kluis["Sam"] = "liniaal"
print(kluis["Noor"])
print(len(kluis))
for naam, ding in kluis.items():
print(naam, ding)
Gok eerst: hoeveel kluisjes zijn er aan het eind? ______
| Na regel | De kluisjes (naam: inhoud) | Op het scherm |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | ||
| 6 en 7 |
Een kluisje dat er niet is
Wat doen deze twee programma's? Gok eerst, speel het dan.
kluis = {"Sam": "liniaal", "Noor": "boek", "Ali": "pen"}
print(kluis["Bo"])
kluis = {"Sam": "liniaal", "Noor": "boek", "Ali": "pen"}
if "Bo" in kluis:
print(kluis["Bo"])
else:
print("Bo heeft geen kluisje.")
Mijn gok bij het eerste: ______ Bij het tweede: ______
Bespreek na
- Regel 3 zet iets in kluisje
Sam. Kwam er een kluisje bij? - Bij een lijst schrijf je
snoep[0]. Wat zoukluis[0]doen, en waarom? - Wanneer kies je een dictionary in plaats van een lijst?
Antwoorden
Het programma. Regel 3 vervangt de inhoud van kluisje Sam: er komt
geen kluisje bij. Aan het eind zijn er drie.
kluis = {"Sam": "gum", "Noor": "boek"}
kluis["Ali"] = "pen"
kluis["Sam"] = "liniaal"
print(kluis["Noor"])
print(len(kluis))
for naam, ding in kluis.items():
print(naam, ding)
Uitvoer:
boek
3
Sam liniaal
Noor boek
Ali pen
Een kluisje dat er niet is. Het eerste programma stopt:
kluis = {"Sam": "liniaal", "Noor": "boek", "Ali": "pen"}
print(kluis["Bo"])
Uitvoer:
KeyError: 'Bo'
Het tweede kijkt eerst met in, en opent alleen een kluisje dat er is. Het
print Bo heeft geen kluisje.
Bespreek na. Vraag 2: kluis[0] zoekt een kluisje met de naam 0,
en dat is er niet: weer een KeyError. Vraag 3: als je iets op naam
opzoekt, zoals een woord in een woordenlijst.
Verder op de site
- In de les: 11a Dictionaries en 11b Door een dictionary lopen.
- In het project Woordjes overhoren is de woordenlijst zo'n kast met kluisjes.