Gå till innehållet

Loopar

Loopar upprepar kod. I Python använder du främst while (så länge något stämmer) och for (ett visst antal varv eller för varje sak i en lista).

Mål för denna sida

  • Känna till skillnaden mellan while och for
  • Veta när man kan använda break och continue

Snabb översikt

  • while: när du inte vet hur många varv i förväg (t.ex. gissa-tal, meny).
  • for: när du vet hur många varv eller när du loopar över en lista.
  • break: avbryt loopen direkt; continue: hoppa till nästa varv.

Oändlig loop (bryt med break)

Python
1
2
3
4
5
6
while True:
    svar = input("Vad är meningen med livet? ")
    if svar == "42":
        print("Rätt!\n")
        break
    print("Nope, försök igen!")

Loopa med räknare (antal chanser)

Python
import random
slumptal = random.randint(1, 50)
chanser = 5

while chanser > 0:
    gissning = int(input("Gissa ett tal 1-50: "))
    if gissning == slumptal:
        print("Great, du är så smart!")
        break
    print("Nope, försök igen!")
    chanser -= 1

Loopa ett givet antal varv

Exempel: for vs while

Python
1
2
3
4
5
6
7
8
9
# for: fem varv
for i in range(5):
    print(i)

# while: samma sak
i = 0
while i < 5:
    print(i)
    i += 1

Vanliga misstag och felsökning

  • Oändlig loop: glömt uppdatera räknaren (while).
  • Fel villkor: <= vs < gör skillnad på om sista varvet körs.
  • Konvertering: när du läser tal med input(), glöm inte int().
Python
1
2
3
4
varv = 0
while varv < 5:
    print("Varv", varv)
    varv += 1

Hitta felen! (5 fel)

Koden ska räkna 1..5 och sedan skriva ”klar”. Rätta fem fel.

Python
1
2
3
4
5
6
7
8
9
while i <= 5:
    print(i)
    if i == 3:
        continue
    i += 1
print("klar")
for j in range(1, 5):
    pass
print(j)

Facit

Python
# Fix 1: Undvik continue eller öka i även när i == 3
i = 1
while i <= 5:
    print(i)
    i += 1  # Fix 2: uppdatera alltid i

# Fix 3: Nu avslutas loopen korrekt och vi kan skriva klart
print("klar")

# Fix 4: Range ska gå till och med 5 → använd 6 som stoppvärde
for j in range(1, 6):
    pass

# Fix 5: Skriv ut något meningsfullt eller undvik att använda j efter loopen
print("for-loopen kördes", j, "varv")