Opstap

Deze pagina bevat uitvoerbare code.

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)