Programmering nivå 1 med Python
Kapitel 6: Loopar
I detta kapitel lär du dig hur kod kan upprepas med for- och while-loopar, samt hur break används för att styra upprepningar.
Innehållsförteckning
Klicka på ett avsnitt för att hoppa direkt.
6.1 Varför loopar behövs
I många program behöver samma kod köras flera gånger. Om vi skulle skriva samma kod om och om igen skulle programmet bli långt och svårt att läsa.
Därför använder programmerare loopar.
En loop gör att ett program kan upprepa en kodsektion automatiskt.
Exempel utan loop
Om vi vill skriva ut talen 1 till 5 utan loop måste vi skriva:
print(1)
print(2)
print(3)
print(4)
print(5)
Det fungerar, men koden blir snabbt lång om vi behöver skriva ut många tal.
Exempel med loop
Med en loop kan samma uppgift lösas mycket enklare.
for i in range(5):
print(i + 1)
Programmet upprepar utskriften flera gånger automatiskt.
Varför loopar är viktiga
Loopar används när program behöver upprepa en uppgift många gånger, arbeta med listor av data, räkna upp eller ner och bearbeta många värden.
Många program i verkligheten använder loopar, till exempel när spel uppdaterar skärmen många gånger per sekund, när program går igenom en lista med användare, eller när en app bearbetar många dataposter.
Två vanliga loopar i Python
I Python finns två vanliga typer av loopar:
foranvänds när man vet hur många gånger något ska upprepaswhileanvänds när något ska upprepas så länge ett villkor är sant
I detta kapitel kommer du att lära dig hur båda dessa fungerar.
6.2 while-loop
En while-loop upprepar kod så länge ett villkor är sant.
Det betyder att programmet kontrollerar villkoret före varje varv.
Exempel
count = 1
while count <= 5:
print(count)
count = count + 1
Programmet skriver ut talen 1 till 5.
Hur det fungerar
- Variabeln
countbörjar på 1. - Programmet kontrollerar om count är mindre än eller lika med 5.
- Om sant skrivs count ut.
- Count ökas med 1.
- Villkoret kontrolleras igen.
Viktigt
Glöm inte att ändra variabler i loopen, annars kan programmet fastna i en oändlig loop.
6.3 for-loop
En for-loop används när man vill upprepa kod ett visst antal gånger.
I Python används ofta funktionen range() tillsammans med en for-loop.
Exempel
for i in range(5):
print(i)
Hur programmet fungerar
range(5) skapar talen 0, 1, 2, 3, 4.
Variabeln i får varje tal i tur och ordning.
Programmet skriver därför ut:
0
1
2
3
4
Viktigt att tänka på
Koden som ska upprepas måste vara indragen.
for i in range(5):
print(i)
Varje gång loopen körs får variabeln i ett nytt värde.
6.4 range()
Funktionen range() används ofta tillsammans med for-loopar. Den skapar en serie tal som
loopen kan gå igenom.
Enkelt exempel
for i in range(5):
print(i)
range(5) skapar talen 0, 1, 2, 3, 4.
Observera att talet 5 inte ingår.
Start och stopp
Man kan också ange startvärde och stoppvärde.
for i in range(1, 6):
print(i)
Programmet skriver då ut:
1
2
3
4
5
Steg i range()
Man kan också ange hur mycket talet ska öka varje gång.
for i in range(0, 10, 2):
print(i)
Programmet skriver ut:
0
2
4
6
8
Detta gör att loopen hoppar fram 2 steg varje gång.
6.5 Oändliga loopar
En oändlig loop är en loop som aldrig tar slut.
Det händer när villkoret i loopen alltid är sant.
Exempel
while True:
print("Detta program fortsätter för alltid")
Eftersom villkoret True alltid är sant kommer loopen att fortsätta.
Oändlig loop av misstag
Man kan också råka skapa en oändlig loop:
count = 0
while count < 5:
print(count)
Här ändras aldrig värdet på count. Villkoret är därför alltid sant och loopen slutar aldrig.
Rätt sätt
count = 0
while count < 5:
print(count)
count = count + 1
Nu ökar count varje gång loopen körs och programmet avslutas när count blir 5.
6.6 Loopar och villkor
Loopar och villkor används ofta tillsammans i program.
En loop kan upprepa en uppgift, och ett villkor kan bestämma vad som ska hända i varje varv av loopen.
Exempel
for i in range(1, 11):
if i % 2 == 0:
print(f"{i} är jämnt")
else:
print(f"{i} är udda")
Hur programmet fungerar
Loopen går igenom talen 1 till 10.
För varje tal kontrollerar programmet om talet är jämnt eller udda.
Operatorn % används för att ta fram resten vid division. Om resten blir 0 är talet
jämnt.
Exempel med användarens inmatning
number = int(input("Hur många tal vill du skriva ut? "))
for i in range(1, number + 1):
if i % 2 == 0:
print(f"{i} är jämnt")
else:
print(f"{i} är udda")
Programmet skriver ut alla tal upp till det tal användaren anger.
Varför detta är viktigt
Genom att kombinera loopar och villkor kan program bearbeta många värden, analysera data och göra olika saker i varje varv av loopen.
6.7 Program med upprepningar
Loopar används ofta när ett program behöver göra samma sak flera gånger.
Det kan till exempel handla om att läsa in flera värden, räkna något eller skriva ut många resultat.
Exempel: skriva ut flera tal
for i in range(1, 11):
print(i)
Programmet skriver ut talen från 1 till 10.
Exempel: summera tal
total = 0
for i in range(5):
number = int(input("Skriv ett tal: "))
total = total + number
print(f"Summan är {total}")
Hur programmet fungerar
Variabeln total börjar med värdet 0.
Varje gång loopen körs läses ett tal in och talet läggs till i total.
När loopen är klar skrivs summan ut.
Exempel: räkna jämna tal
count = 0
for i in range(1, 11):
if i % 2 == 0:
count = count + 1
print(f"Antal jämna tal är {count}")
Programmet går igenom talen 1 till 10 och räknar hur många som är jämna.
Varför upprepningar är viktiga
Loopar gör det möjligt att bearbeta många värden, upprepa beräkningar och skapa program som arbetar med större datamängder.
Många program i verkligheten bygger på upprepningar.
6.8 Break
Ibland behöver ett program avsluta en loop tidigare än planerat. Då kan man använda kommandot
break.
När break körs avslutas loopen direkt, även om villkoret fortfarande är sant.
Exempel
while True:
number = int(input("Skriv ett tal (0 för att avsluta): "))
if number == 0:
break
print(f"Du skrev talet {number}")
Hur programmet fungerar
Programmet använder en oändlig loop.
Varje gång loopen körs frågar programmet efter ett tal.
Om användaren skriver 0 körs break och loopen avslutas. Annars fortsätter programmet.
Exempel på körning
Skriv ett tal (0 för att avsluta): 5
Du skrev talet 5
Skriv ett tal (0 för att avsluta): 8
Du skrev talet 8
Skriv ett tal (0 för att avsluta): 0
Programmet avslutas.
Varför break används
break används när man vill avsluta en loop i förtid, stoppa ett program när ett visst
villkor uppfylls eller avbryta en oändlig loop.
Det är ett vanligt sätt att kontrollera när ett program ska sluta köra.
6.9 Övningar
I dessa övningar ska du använda for, while, range(), villkor (if) och break.
Övning 1
Skriv ett program som skriver ut talen från 1 till 10 med en for-loop.
Övning 2
Skriv ett program som skriver ut talen från 1 till 20.
Programmet ska skriva ut om varje tal är jämnt eller udda.
Tips: använd %.
Övning 3
Skriv ett program som frågar användaren efter 5 tal.
Programmet ska räkna ut summan av talen och skriva ut resultatet.
Övning 4
Skriv ett program som frågar användaren efter ett tal.
Programmet ska skriva ut multiplikationstabellen för talet från 1 till 10.
Exempel om användaren skriver 3:
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
Övning 5
Skriv ett program som frågar användaren efter tal tills användaren skriver 0.
Programmet ska skriva ut varje tal som användaren skriver.
Använd en while-loop.
Övning 6
Skriv ett program som frågar användaren efter tal tills användaren skriver 0.
Programmet ska räkna ut summan av alla tal.
Tips: använd break.
Övning 7
Skriv ett program som frågar användaren efter tal tills användaren skriver 0.
Programmet ska räkna hur många tal användaren har skrivit.
Övning 8
Skriv ett program som skriver ut talen från 1 till 50.
Programmet ska skriva ut:
- Fizz om talet är delbart med 3
- Buzz om talet är delbart med 5
- FizzBuzz om talet är delbart med både 3 och 5
- annars ska talet skrivas ut
Vad är FizzBuzz?
FizzBuzz är en klassisk programmeringsövning som ofta används när man lär sig programmering.
Uppgiften används också ibland i jobbintervjuer för programmerare. Den testar om en person förstår grundläggande saker i programmering, till exempel loopar, villkor, operatorer och logiskt tänkande.
Bakgrund
Spelet FizzBuzz kommer ursprungligen från ett barnspel där deltagare räknar upp tal i tur och ordning.
Reglerna är:
- säg Fizz istället för tal som är delbara med 3
- säg Buzz istället för tal som är delbara med 5
- säg FizzBuzz istället för tal som är delbara med både 3 och 5
När uppgiften används i programmering ska datorn göra samma sak.
6.10 Reflektionsfrågor
- Vad är en loop i programmering?
- Varför används loopar i program?
- Vad är skillnaden mellan en for-loop och en while-loop?
- Vad gör funktionen range() i en for-loop?
- Varför är indrag viktiga när man skriver loopar i Python?
- Vad är en oändlig loop och hur kan den uppstå?
- Hur kan kommandot break användas i en loop?
- Ge ett exempel på en situation där ett program behöver upprepa något många gånger.
- Varför är loopar viktiga när man arbetar med större datamängder?
- Hur kan loopar och villkor användas tillsammans i ett program?