Python for lærere – Egentrening
Fire konsepter
3 Løkker
3.2 While-løkker
Funksjoner
Løkker
While-løkker kommer til å kjøre helt til et et vilkår møtes. Dersom vi ikke vet hvor mange ganger løkka må kjøres, kan det være praktisk å benytte et vilkår. La oss se på et eksempel:
Vi lager en kode som “gjetter” på et tall mellom 1 og 100, også teller vi hvor mange ganger koden må gjette for å treffe riktig!
from random import randint
tall = 42
ant_gjett = 0
gjett = 0
while gjett != tall:
gjett = randint(1, 100)
ant_gjett = ant_gjett + 1
print(ant_gjett)
Skriv inn denne koden i Code, og kjør den. Her er det flere ting å legge merke til:
- ulik skrives “!=” i python
- alltid kolon på slutten av en while-linje
- all kode som skal gjentas må rykkes inn for at python skal forstå hva som er “i løkka”
- linje 9 er ikke en del av løkka, fordi den ikke er rykket inn
- En python-editor (Code) vil lage automatisk innrykk etter en korrekt while-linje
- vi må lage variabelen gjett FØR vi benytter den i vilkåret på linje 6
Etter ‘while’ kan man skrive mange forskjellige vilkår, og vi kommer til å snakke om disse i det neste temaet.
La oss nå heller se på hvordan vi kan løse et problem med while-løkker. Samme oppgave som i stad, konto med kr 12 000,- og månedlig sparing på 750,- Hvor lang tid tar det før man kommer til kr 30 000,-?
konto = 12000
sparing = 750
mnd = 0
while konto < 30000:
konto = konto + sparing
mnd = mnd + 1
print(mnd, konto)
Her er vilkåret for løkka “konto < 30000”, som betyr at løkka kjøres så lenge konto er mindre en 30000. Hva skjer med output dersom linje 8 skrives uten innrykk? Gjett og test!
Vi bør nevne at while-løkker fort kan bli “uendelige”. Hva skjer dersom man i koden skriver en løkke som varer evig? Vel, i gamle dager måtte vi starte datamaskinen på nytt, og kanskje trekke ut kontakten for å få stoppet den. Slik er det ikke lenger. I DigitAbel Code holder det med å laste siden på nytt, og en del python-editorer har en “Stopp”-knapp man kan trykke på. Eksempel på en slik kode kan være det siste eksemplet vårt, men vi tar bort linje 6. Hva skjer? Vel, konto kommer aldri til å bli større, og vil alltid være mindre enn 30000.
Siden vi allerede har begynt å tenke vilkår, så kan vi vel stupe inn i det?
DigitAbel – for dypere læring
