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:

  • for används när man vet hur många gånger något ska upprepas
  • while anvä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

  1. Variabeln count börjar på 1.
  2. Programmet kontrollerar om count är mindre än eller lika med 5.
  3. Om sant skrivs count ut.
  4. Count ökas med 1.
  5. 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

  1. Vad är en loop i programmering?
  2. Varför används loopar i program?
  3. Vad är skillnaden mellan en for-loop och en while-loop?
  4. Vad gör funktionen range() i en for-loop?
  5. Varför är indrag viktiga när man skriver loopar i Python?
  6. Vad är en oändlig loop och hur kan den uppstå?
  7. Hur kan kommandot break användas i en loop?
  8. Ge ett exempel på en situation där ett program behöver upprepa något många gånger.
  9. Varför är loopar viktiga när man arbetar med större datamängder?
  10. Hur kan loopar och villkor användas tillsammans i ett program?