Ga naar hoofdinhoud

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​

  1. Draai de code een paar keer. Welke wegen loopt de surfer?
  2. Op welke pagina's kan hij na twee klikken zijn?
  3. Laat hem op D beginnen: pagina = "D". Waar is hij na één klik?
Python
Code-omgeving wordt voorbereid…
Antwoorden
  1. A, B, C of A, C, A. Andere wegen zijn er niet vanaf A.
  2. Op C (via B) of terug op A (via C).
  3. 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:

  1. Draai de code: de surfer klikt één keer vanaf A.
  2. Zet de klik en de print in een loop van tien keer. Je ziet nu tien pagina's.
  3. Laat de surfer op D beginnen in plaats van op A. Tel hoe vaak D nog in de uitvoer staat.
Python
Code-omgeving wordt voorbereid…
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.