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
- Skriv en for-loop som skriver ut alla tal från 1 till 20 som är delbara med 3.
- Skapa en while-loop som fortsätter att fråga användaren om en gissning tills hen gissar rätt på ett förutbestämt tal.
- Kombinera en meny och funktioner som i exemplet ovan men med tre alternativ: skriv ett namn, räkna upp till ett tal, avsluta.
När du har försökt själv kan du ladda ner ett lösningsförslag: kap1-5-loopar-losningsforslag.py
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?