Du tror en tilfeldig verdi fornyer seg selv

Handler om: Tilfeldighet (random), Løkke

Du kaller random én gang og bruker variabelen inne i løkka, og venter at den skal være ny hver runde. Men random er tilfeldig i det øyeblikket den KALLES. Står kallet over løkka, kjører det én gang, og variabelen holder den samme verdien resten av programmet.

Eksempel

Spillet ditt trekker «storm» på dag 1 — og så er det storm alle de nitten andre dagene også, fordi trekningen står over while-løkka.

Slik tenker du riktig om det

Tenk på random som et terningkast, ikke som en terning. Kastet skjer når linja kjører; resultatet blir liggende til du kaster på nytt. Vil du ha et nytt kast hver runde, må kastet stå inne i løkka.

Slik ser det ut i kode

Slik gikk det galt

hendelse = random.choice(liste)   # trekkes EN gang
while dag <= 20:
    print(hendelse)              # samme hver dag
    dag += 1

Slik fikser du det

while dag <= 20:
    hendelse = random.choice(liste)   # trekkes hver dag
    print(hendelse)
    dag += 1

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala