Opstap¶
Werk met een rechthoekig raster: een lijst van lijsten met 0 (dood) en 1 (levend). bord[rij][kolom] is één cel. Elke opdracht staat op zichzelf.
1. Eén cel veranderen¶
Maak dit bord en verander alleen de cel op rij 1, kolom 2 in 1. Controleer dat de andere cellen hetzelfde blijven.
bord = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
# schrijf hier de directe toekenning
assert bord == [[0, 0, 0], [0, 0, 1], [0, 0, 0]]
2. Verwijzingen¶
Voer ander = bord uit. Twee namen verwijzen nu naar dezelfde lijst. Verander daarna ander[0][0] in 1 en leg uit waarom bord ook verandert.
bord = [[0, 0], [0, 0]]
ander = bord
# verander ander hier
assert bord[0][0] == 1
3. Een onafhankelijke kopie¶
Maak kopie met een nieuwe buitenlijst en voor elke rij een nieuwe lijst. Verander daarna alleen kopie[0][0].
bord = [[0, 0], [0, 0]]
kopie = []
for rij in bord:
kopie = kopie + [rij[:]]
kopie[0][0] = 1
assert bord == [[0, 0], [0, 0]]
assert kopie == [[1, 0], [0, 0]]
4. Tuple en uitpakken¶
Een robot geeft zijn positie terug als een tuple (rij, kolom). Schrijf midden_van(bord) zodat de functie de middelste positie teruggeeft. Pak daarna de twee waarden uit in rij en kolom.
Voorspel ook wat er gebeurt bij positie[0] = 9. Een tuple kun je lezen, maar niet op een positie wijzigen. Voer die toekenning gecontroleerd uit met een try-except-blok en leg de foutmelding in één zin uit.
Verwachte uitkomst voor het gegeven 3x3-bord: (rij, kolom) == (1, 1).
# schrijf hier jouw functie midden_van
# roep haar aan met [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
# pak de tuple uit in rij en kolom
# maak positie voor de teruggegeven tuple
# probeer positie[0] = 9 gecontroleerd uit
# controleer dat (rij, kolom) == (1, 1)