Kap 1.5
Loopar och upprepning
Vi använder loopar när kod ska köras flera gånger på ett kontrollerat sätt.
Mål
Efter lektionen ska du kunna...
- förklara skillnaden mellan
forochwhile - välja rätt loop för rätt situation
- kombinera loopar med funktioner och villkor
- använda
breakochcontinuemedvetet
Kärnidé
Vad är en loop?
En loop upprepar kod.
Den kan köra ett bestämt antal varv.
Den kan fortsätta tills ett villkor ändras.
Den kan gå igenom data steg för steg.
for-loop
När du vet hur många varv
for i in range(5):
print(f"This is line {i}")
Loopen kör fem gånger: 0, 1, 2, 3, 4.
range
range() skapar en talföljd
range(5)ger 0 till 4range(1, 6)ger 1 till 5- sista talet ingår inte
Exempel
Summera tal
total = 0
for i in range(1, 6):
total += i
print(f"Sum: {total}")
Resultatet blir 15.
Stegvis
Vad händer med total?
total = 0
Vi startar med en tom summa.
for i in range(1, 6):
Loopen kör med i som 1, 2, 3, 4, 5.
total += i
Varje varv läggs i till i total: 0 → 1 → 3 → 6 → 10 → 15.
print(f"Sum: {total}")
När loopen är klar skrivs slutvärdet ut.
while-loop
När du inte vet antal varv
En while-loop kör så länge ett villkor är sant.
Den passar när programmet väntar på att något ska ändras.
Till exempel rätt lösenord eller rätt gissning.
Exempel
Fråga tills lösenordet är rätt
password = ""
while password != "secret":
password = input("Enter password: ")
print("Access granted.")
Loopen slutar först när villkoret blir falskt.
Jämförelse
for eller while?
for: gå igenom en känd serie värdenwhile: fortsätt tills ett villkor ändras- båda kan kombineras med
if
Risk
while kan bli evig
while True:
print("Detta slutar aldrig")
Om villkoret aldrig blir falskt fortsätter loopen.
Därför behöver du en tydlig väg ut.
break
Avsluta loopen direkt
if choice == "4":
break
break hoppar ut ur loopen.
Det används ofta i menyer.
continue
Hoppa till nästa varv
if i % 2 == 0:
continue
continue hoppar över resten av det aktuella varvet.
Loopen fortsätter sedan med nästa värde.
Exempel
break och continue
for i in range(10):
if i == 7:
break
if i % 2 == 0:
continue
print(i)
i = 0 → continue → skriver inte ut
i = 1 → print(i) → skriver ut 1
i = 2 → continue → skriver inte ut
i = 3 → print(i) → skriver ut 3
i = 4 → continue → skriver inte ut
i = 5 → print(i) → skriver ut 5
i = 6 → continue → skriver inte ut
i = 7 → break → loopen avslutas
Koden skriver alltså ut 1, 3 och 5.
Funktioner
Loopar blir tydligare med funktioner
En funktion kan skriva ut menyn.
En annan funktion kan köra programflödet.
Då blir koden lättare att läsa och ändra.
Meny
En funktion för menyn
def print_menu():
print("1. Visa saldo")
print("2. Sätt in pengar")
print("3. Ta ut pengar")
print("4. Avsluta")
Samma meny kan skrivas ut varje varv.
while True
Kör tills användaren avslutar
while True:
print_menu()
choice = input("Välj alternativ: ")
if choice == "1":
print(f"Saldo: {balance} kr")
elif choice == "4":
break
else:
print("Ogiltigt val.")
Helheten
Bankomatmeny
def print_menu():
print("1. Visa saldo")
print("2. Sätt in pengar")
print("3. Ta ut pengar")
print("4. Avsluta")
def run():
balance = 500
while True:
print_menu()
choice = input("Välj alternativ: ")
if choice == "1":
print(f"Saldo: {balance} kr")
elif choice == "4":
break
else:
print("Ogiltigt val.")
run()
Egen övning
Träna tre mönster
- Skriv ut tal 1-20 som är delbara med 3.
- Fråga efter en gissning tills användaren gissar rätt.
- Bygg en meny med tre alternativ.
Reflektion
Fundera
- När passar
forbäst? - När passar
whilebäst? - Hur gör funktioner loopar mer läsbara?
- När är
breakrätt verktyg?
Sammanfattning
Kom ihåg
forpassar för kända talföljder och samlingar.whilepassar när ett villkor styr slutet.breakavslutar loopen.continuehoppar till nästa varv.- Loopar, villkor och funktioner bygger riktiga program tillsammans.