Programmering nivå 2
Kap 1.5 – Loopar och upprepning
Använd for- och while-loopar för att upprepa kod på ett kontrollerat sätt.
Mål med lektionen
- Förstå skillnaden mellan for- och while-loopar.
- Veta när du ska använda vilken typ av loop.
- Kunna kombinera loopar med funktioner och villkor.
- Använda break och continue på ett medvetet sätt.
Så här lär du dig bäst
Börja med att titta på vad koden försöker upprepa - vad är mönstret? Skriv egna exempel, men ändra siffror, ordning och logik för att se hur programflödet påverkas. Det är så du tränar upp förmågan att använda loopar med självförtroende.
Vad är en loop?
En loop används när du vill upprepa något - till exempel skriva ut flera rader, fråga flera gånger eller gå igenom en lista.
for-loop - När du vet hur många gånger
for i in range(5):
print(f"This is line {i}")
Denna loop kör fem gånger (från 0 till 4). Variabeln i ökar automatiskt varje varv.
Exempel - summera tal:
total = 0
for i in range(1, 6):
total += i
print(f"Sum: {total}")
Interaktiv övning: summera med for-loop
Testa hur en for-loop går igenom talen i en bestämd ordning och bygger upp en
summa steg för steg.
Prova till exempel att:
- skriva
5för att summera 1 till 5 - skriva
10och se hur fler varv körs - skriva text i stället för ett tal och se felmeddelandet
Programmering 2-koppling: en for-loop passar
bra när du vet vilka värden loopen ska gå igenom.
while-loop - När du inte vet hur många gånger
En while-loop kör så länge ett villkor är sant.
password = ""
while password != "secret":
password = input("Enter password: ")
print("Access granted.")
Det här används ofta för inmatning eller oklara förlopp där du inte vet i förväg hur många iterationer som behövs.
Interaktiv övning: upprepa med while-loop
Testa hur en while-loop fortsätter fråga tills villkoret blir falskt. Skriv ett
försök i taget, precis som i ett vanligt Python-program.
Prova till exempel att:
- skriva
testförst ochsecretnästa gång programmet frågar - skriva
secretdirekt och se att loopen bara kör ett varv - skriva flera felaktiga försök och se att loopen fortsätter fråga
Programmering 2-koppling: en while-loop
passar när du inte vet i förväg hur många försök som behövs.
break och continue
- break avslutar loopen direkt.
- continue hoppar över resten av ett varv och går till nästa.
Exempel:
for i in range(10):
if i == 7:
break
if i % 2 == 0:
continue
print(i)
Denna kod skriver ut alla udda tal före 7.
Kombinera loopar och funktioner
Loopar blir tydligare när du bryter ut delar i funktioner.
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 == "2":
amount = int(input("Belopp: "))
balance += amount
print(f"Du satte in {amount} kr.")
elif choice == "3":
amount = int(input("Belopp: "))
balance -= amount
print(f"Du tog ut {amount} kr.")
elif choice == "4":
break
else:
print("Ogiltigt val.")
run()
Här används while True för en meny som körs tills användaren vill avsluta.
Interaktiv övning: realistisk meny med while True
Testa en enkel bankomatmeny. Välj ett alternativ, kör valet och titta på resultatet innan du
väljer nästa alternativ. Programmet körs tills valet är 4.
Prova till exempel att:
- välja
1för att visa saldo - välja
2, skriva ett belopp och sedan välja1för att se att saldot ändras - välja
9och se hurelse-grenen hanterar fel val
Programmering 2-koppling: menyn visar hur funktioner, loopar och villkor kan samarbeta i ett program som känns mer som en riktig applikation.
Öva själv
Övning 1: Räkna från 1 till 10
Skriv ett program som använder en for-loop och range för att skriva ut
talen från 1 till 10. Varje tal ska skrivas på en egen rad.
Kontrollera programmet
- Det första talet som skrivs ut ska vara
1. - Det sista talet som skrivs ut ska vara
10. - Sammanlagt ska tio tal skrivas ut.
Fundera: Vilket stoppvärde behöver du använda i
range för att talet 10 ska komma med?
När du har försökt själv: visa lösningsförslaget till övning 1 på GitHub.
Övning 2: Tal som är delbara med 4
Skriv ett program som går igenom talen från 1 till 30. Använd en
for-loop och ett villkor för att bara skriva ut tal som är delbara med
4.
Kontrollera programmet
- Det första talet som skrivs ut ska vara
4. 16ska skrivas ut.30ska inte skrivas ut.
Fundera: Hur kan operatorn % användas för
att kontrollera om ett tal är jämnt delbart med 4?
När du har försökt själv: visa lösningsförslaget till övning 2 på GitHub.
Övning 3: Gissa det hemliga talet
Välj ett hemligt heltal och spara det i en variabel. Programmet ska använda en
while-loop för att fråga användaren efter en gissning tills svaret är rätt. Efter
en felaktig gissning ska programmet skriva "Försök igen". När användaren gissar
rätt ska programmet skriva "Rätt gissat!".
Testa programmet
- Gissa rätt direkt och kontrollera att loopen avslutas.
- Gissa fel två gånger och därefter rätt.
Fundera: Varför passar en while-loop bättre
än en for-loop när du inte vet hur många gissningar som behövs?
När du har försökt själv: visa lösningsförslaget till övning 3 på GitHub.
Övning 4: Hoppa över och avsluta
Skriv ett program som går igenom talen från 1 till 20. Jämna tal ska
hoppas över med continue. När loopen når talet 15 ska den avslutas med
break. Övriga tal ska skrivas ut.
Kontrollera programmet
- Endast udda tal som är mindre än
15ska skrivas ut. 2och8ska inte skrivas ut.15och talen efter15ska inte skrivas ut.
Fundera: Vad är skillnaden mellan hur
continue och break påverkar loopen?
När du har försökt själv: visa lösningsförslaget till övning 4 på GitHub.
Övning 5: Summera jämna tal
Svårare övning: Här kombinerar du en funktion,
return, en loop och ett villkor.
Skriv funktionen sum_even_numbers(limit). Funktionen ska använda en
for-loop för att summera alla jämna tal från 1 till och med
limit och sedan returnera summan. Huvudprogrammet ska fråga användaren efter
gränsen, anropa funktionen och skriva ut resultatet.
Testa programmet med
6, vilket ska ge summan12.10, vilket ska ge summan30.1, vilket ska ge summan0.
Fundera: Varför ska variabeln som lagrar summan skapas före loopen?
När du har försökt själv: visa lösningsförslaget till övning 5 på GitHub.
Övning 6: Kontrollera flera besökare
Svårare övning: Här kombinerar du funktioner, returvärden, logiska uttryck, villkor och en loop.
Skapa ett program som kontrollerar flera besökare till ett evenemang. Skriv en funktion som tar
emot en besökares ålder och om personen har biljett. Funktionen ska returnera True
om personen är minst 18 år och har biljett, annars False.
Huvudprogrammet ska använda en while-loop och fortsätta fråga efter nya besökare.
Om användaren skriver åldern 0 ska loopen avslutas med break. För varje
annan besökare ska programmet fråga om biljett och skriva om personen får gå in. Programmet ska
också räkna hur många som får gå in och skriva ut antalet efter loopen.
Testa programmet med
- Ålder
20och biljettja. - Ålder
17och biljettja. - Ålder
25och biljettnej. - Ålder
0för att avsluta och visa antalet godkända besökare.
Fundera: Varför behöver kontrollen av åldern
0 göras innan programmet frågar om biljett?
När du har försökt själv: visa lösningsförslaget till övning 6 på GitHub.
Reflektion
- När använder du for och när passar while bättre?
- Hur kan du göra en loop mer läsbar?
- Har du testat att bryta en loop med break? Hur påverkade det flödet?