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 daarna uit in de tweede cel 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
# controleer dat (rij, kolom) == (1, 1)
# geef de teruggegeven tuple de naam positie
# voer positie[0] = 9 uit en lees de foutmelding