Een klik
Je hebt het web in een dictionary gezet. Nu laat je de surfer klikken: op de pagina waar hij is, kiest hij een willekeurige link, en daar gaat hij heen.
Voorspel
import random
web = {"A": ["B", "C"], "B": ["C"], "C": ["A"], "D": ["C"]}
pagina = "A"
pagina = random.choice(web[pagina])
print(pagina)
Wat kan dit programma printen? En wat print het als je het heel vaak draait?
Antwoord
B of C: random.choice kiest een willekeurig element uit de lijst links
van pagina A. Draai je het vaak, dan komen ze allebei ongeveer even vaak voor.
Zo werkt het
De surfer begint op A. Bij een klik kiest hij met random.choice een link van
de pagina waar hij is, en gaat daarheen. In
pagina = random.choice(web[pagina]) gebruikt Python eerst de oude pagina
om de links op te zoeken, en zet daarna de nieuwe pagina in dezelfde
variabele.
Onderzoek
- Draai de code een paar keer. Welke wegen loopt de surfer?
- Op welke pagina's kan hij na twee klikken zijn?
- Laat hem op D beginnen:
pagina = "D". Waar is hij na één klik?
Antwoorden
- A, B, C of A, C, A. Andere wegen zijn er niet vanaf A.
- Op C (via B) of terug op A (via C).
- Altijd op C: D heeft maar één link.
Opdracht: tien klikken
Laat de surfer tien keer klikken, en print na elke klik waar hij is. Begin op D. Komt hij daarna nog op D? Bijvoorbeeld:
C
A
B
C
Begin klein, en breid de code stap voor stap uit:
- Draai de code: de surfer klikt één keer vanaf A.
- Zet de klik en de print in een loop van tien keer. Je ziet nu tien pagina's.
- Laat de surfer op D beginnen in plaats van op A. Tel hoe vaak D nog in de uitvoer staat.
Tip
Zie je maar één pagina? Dan staat de print onder de loop in plaats van erin.
Antwoord
import random
web = {"A": ["B", "C"], "B": ["C"], "C": ["A"], "D": ["C"]}
pagina = "D"
for i in range(10):
pagina = random.choice(web[pagina])
print(pagina)
D staat er nooit in. Vanaf D gaat de surfer naar C, en geen enkele pagina linkt terug naar D.
Door naar duizend klikken.