Presentationer Slide 1/1

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 for och while
  • välja rätt loop för rätt situation
  • kombinera loopar med funktioner och villkor
  • använda break och continue medvetet

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 4
  • range(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ärden
  • while: 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

  1. Skriv ut tal 1-20 som är delbara med 3.
  2. Fråga efter en gissning tills användaren gissar rätt.
  3. Bygg en meny med tre alternativ.

Reflektion

Fundera

  • När passar for bäst?
  • När passar while bäst?
  • Hur gör funktioner loopar mer läsbara?
  • När är break rätt verktyg?

Sammanfattning

Kom ihåg

  • for passar för kända talföljder och samlingar.
  • while passar när ett villkor styr slutet.
  • break avslutar loopen.
  • continue hoppar till nästa varv.
  • Loopar, villkor och funktioner bygger riktiga program tillsammans.