Løkker#

Løkker brukes for å gjenta en del av koden flere ganger.

while-løkker#

while-løkker (while-loops) brukes hvis vi vet når koden skal stoppe, men ikke nødvendigvis hvor mange ganger den skal kjøre.

a = 0

while a < 5:  # Sjekker om a er mindre enn 5
    print(a)  # Skriver ut a
    a += 1    # Legger til 1 på a
0
1
2
3
4

Her starter vi med a = 1. Deretter sjekker while-løkken om utsagnet a < 5 er sant. Siden det er sant så kjøres koden som står med innrykk. Her skrives a ut og det legges til 1a. Dette gjentas helt til a er lik 5, da blir utsagnet a < 5 usant, og koden gjentas ikke flere ganger.

Viktig!

Hvis utsagnet (a < 5) aldri blir usant vil koden i while-løkken kjøres «for alltid». Da krasjer programmet vårt!

Det er viktig å sørge for at while-løkken har en slutt. Derfor sørger vi for at a øker i dette tilfellet.

for-løkker#

for-løkker (for-loops) brukes hvis vi vet akkurat hvor mange ganger koden skal kjøres.

for n in range(5):
    print(n)
0
1
2
3
4

Denne løkken starter med n = 0 og legger til 1n hver gang. Ved å endre på range() kan vi få koden med innrykk til å kjøre så mange ganger vi ønsker.

for-løkker med startverdi og steglengde#

Vi kan få mer kontroll over for-løkker ved å bruke flere parametre i range()-funksjonen.

Vi kan spesifisere en start og en slutt. Indeksene går fra og med den første verdien, men bare til den siste verdien. Det vil si at den siste verdien ikke blir med.

for n in range(1, 5):
    print(n) # n går fra og med 1 *til* 5 (altså er 5 ikke med)
1
2
3
4

Vi kan også spesifisere en steglengde

for n in range(1, 10, 2):
    print(n) # n går fra og med 1 til 10, men med steglengde 2
1
3
5
7
9

Oppgaver#

Oppgave 1 🧑‍🤝‍🧑

Bruk en while-løkke til å skrive ut alle partallene opp til og med 20.

Hint: Begynn med koden fra eksempelet for while-løkker først.

Oppgave 2 🔢

Bruk en for-løkke til å skrive ut alle oddetallene opp til og med 19.

Oppgave 3 🟩

Kvadrattallene er de tallene som har en heltallig kvadratrot, dvs \(\{1, 4, 9, 16, 25, \dots\}\)

Bruk en løkke til å skrive ut alle kvadrattallene opp til og med 100.

Oppgave 4 ❔

Fungerer disse programmene slik de er beskrevet i kommentaren? Hvis ikke, hva må til for å fikse problemet?

# Skriver ut alle partallene t.o.m 50
n = 0
while n < 50:
    n += 2
print(n)
# Skriver ut alle tallene under 100 som er delbare med 5
for n in range(100):
    if n % 5:
        print(n)
# Skriver ut alle oddetallene under 10
for n in range(1, 10, 2):
    print(n)
# Dobler n til tallet er større enn 100
n = 0
while n < 100:
    n = n * 2
    print(n)

Oppgave 5 ➗

Faktorer er tall som et tall er delbart på. For eksempel har tallet \(8\) faktorene \(1\), \(2\), \(4\) og \(8\).

Lag et program som tar et heltall a som input og skriver ut alle faktorene til tallet.

Oppgave 6 🗯️

Spillet FizzBuzz er en tellelek. En og en person skal telle «1, 2, …», men noen tall byttes ut med et ord.

  • Tall som er delelig med \(3\) skal byttes ut med «Fizz».

  • Tall som er delelig med \(5\) skal byttes ut med «Buzz».

  • Tall som er delelig med både \(3\) og \(5\) skal byttes ut med «FizzBuzz».

Lag FizzBuzz i Python for tallene \(\{1, 2, 3, \dots, 20\}\).