De weg tekenen
De weg is nu een lijst vakjes. Die lees je niet in één oogopslag. Daarom
teken je hem in het doolhof: een * op elk vrij vakje van de weg. Daarvoor
bouw je elke rij opnieuw op, teken voor teken.
Voorspel
regel = ""
for teken in "S..#":
if teken == ".":
regel = regel + "*"
else:
regel = regel + teken
print(regel)
Wat print dit programma?
Antwoord
S**#
regel begint leeg, en bij elk teken komt er iets achteraan: een * in
plaats van een punt, en anders het teken zelf.
Zo werkt het
Een tekst kun je niet veranderen, maar je kunt wel een nieuwe opbouwen. Met
regel = regel + "*" plak je een teken achter wat er al stond. Per rij begin
je met een lege regel, en loop je langs de kolommen.
Of een vakje op de weg ligt, vraag je met (rij, kolom) in weg: in werkt op
een lijst van tuples net als op een lijst van woorden. De S en de E laat
je staan, dus een * komt alleen op een vakje met een punt.
Opdracht: teken de weg
Print het doolhof opnieuw, met een * op elk vrij vakje van de weg:
S*....
#*##..
#*...#
.*###.
#****E
Begin klein, en breid de code stap voor stap uit:
- Draai de code: hij print het doolhof, nog zonder weg.
- Bouw elke rij zelf op: zet in de loop
regel = "", loop metfor kolom in range(len(doolhof[0])):langs de kolommen, plak elk tekendoolhof[rij][kolom]achterregel, en printregelin plaats vandoolhof[rij]. Je ziet hetzelfde doolhof. - Plak een
*in plaats van het teken als(rij, kolom)inwegstaat en er een punt op dat vakje staat. Nu zie je de weg.
In de editor staat de weg uit de vorige stap.
Tip
Staat er in stap 2 elk teken op een eigen regel? Dan staat de print in de
binnenste loop. Hij hoort eronder, als de rij af is.
Antwoord
Dit vervangt de loop onderaan de editor:
for rij in range(len(doolhof)):
regel = ""
for kolom in range(len(doolhof[0])):
if (rij, kolom) in weg and doolhof[rij][kolom] == ".":
regel = regel + "*"
else:
regel = regel + doolhof[rij][kolom]
print(regel)
S*....
#*##..
#*...#
.*###.
#****E
De weg loopt door de gang in kolom 1 naar beneden en dan over de onderste rij naar E.
Door naar het paard.