Ga naar hoofdinhoud

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​

  1. kluis["Sam"]: zoek de envelop met Sam erop en kijk wat erin zit. Is er geen envelop met die naam, dan stopt Python met een KeyError.
  2. kluis["Ali"] = "pen": is er al een envelop Ali? Vervang wat erin zit. Zo niet, schrijf Ali op een nieuwe envelop en stop er pen in.
  3. "Bo" in kluis: is er een envelop met Bo erop? Dan is het True. Je opent niets.
  4. .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 regelDe 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​

  1. Regel 3 zet iets in kluisje Sam. Kwam er een kluisje bij?
  2. Bij een lijst schrijf je snoep[0]. Wat zou kluis[0] doen, en waarom?
  3. 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​