«while»-løkker

Hvis vi ikke på forhånd vet hvor mange ganger i løkke skal gjennomløpes, kan vi ikke bruke ei for-løkke, men må i stedet bruke ei while-løkke. while-løkker gjennomløpes så lenge en gitt betingelse er sann.

La oss for eksempel si at vi skal skrive ut alle kvadrattall, altså 12, 22, 32, … som er mindre eller lik 1000. Det kan vi gjøre med ei while-løkke slik:

# Skriv ut kvadrattall <= 1000
n = 1
while n**2 <= 1000:
    print(n**2)
    n += 1

Her tilordnes først variabelen n verdien 1. Deretter kommer ei løkke som gjennomløpes så lenge n2 ≤ 1000. Inni løkka skrives verdien til n2 ut, før verdien til n økes med 1.

I dette tilfellet kan vi ikke bruke ei for-løkke fordi vi ikke vet hvor mange ganger løkka skal gjennomløpes, vi vet bare at vi skal fortsette så lenge n2 er mindre eller lik 1000. (Selvfølgelig kan vi beregne at største n vil bli 31, men for eksempelets skyld later vi som vi er for dumme til det.)

Ei while-løkke består av ordet while etterfulgt av betingelsen som må være sann for at løkka skal gjennomløpes, og til slutt et kolon. Deretter følger ei innrykka blokk, på samme måte som i ei for-løkke.

Vi ser at ei while-løkke blir litt mer innviklet enn ei for-løkke, fordi vi trenger tre instruksjoner for å henholdsvis gi løkkevariabelen en startverdi, sjekke verdien og oppdatere verdien, mens det i for-løkker holder med én enkelt instruksjon. Hvis vi har mulighet til å velge for-løkker i stedet for while-løkker, bør vi derfor gjøre det.

Oppgave 1:

Skriv Python-kode som skriver ut alle kubikktall av partall, altså 23, 43, 63, … , som er mindre eller lik 1000.

Riktig svar er 8, 64, 216, 512 og 1000.

Se løsningsforslag

SkjermfilmSe film om while-løkker

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

while-løkker i Python likner de vi finner i språk som C og JavaScript, bortsett fra at betingelsen ikke trenger å stå i parentes. Python har imidlertid ingen konstruksjon som tilsvarer dowhile-løkkene vi finner i disse programmeringsspråkene.