For-løkken

Gjenta handlinger automatisk med Pythons for-løkke.

🔄 Hva er en for-løkke?

En for-løkke lar deg gjenta en kodeblokk for hvert element i en liste, eller et bestemt antall ganger. I stedet for å skrive den samme koden om og om igjen, lar løkken datamaskinen gjøre jobben for deg.

Uten løkke vs. med løkke
# Uten løkke (tungvint!):
print("Hei, Ola!")
print("Hei, Kari!")
print("Hei, Per!")

# Med for-løkke (smart!):
elever = ["Ola", "Kari", "Per"]
for elev in elever:
    print("Hei, " + elev + "!")
💡 Slik fungerer det: Variabelen elev tar verdien av ett element om gangen fra listen. Koden inne i løkken kjøres én gang for hvert element.

🔢 range() – gjenta et antall ganger

Funksjonen range() genererer en sekvens av tall, og brukes ofte sammen med for-løkker:

range() med for-løkke
# Telle fra 0 til 4
for i in range(5):
    print(i)       # 0, 1, 2, 3, 4

# Telle fra 1 til 5
for i in range(1, 6):
    print(i)       # 1, 2, 3, 4, 5

# Telle i steg av 2
for i in range(0, 10, 2):
    print(i)       # 0, 2, 4, 6, 8
SyntaksForklaringResultat
range(5)0 til 40, 1, 2, 3, 4
range(2, 7)2 til 62, 3, 4, 5, 6
range(0, 10, 3)0 til 9, steg 30, 3, 6, 9

📋 Løkke over en liste

Praktiske eksempler
# Summere alle tall i en liste
tall = [10, 20, 30, 40, 50]
total = 0

for t in tall:
    total += t

print("Summen er:", total)   # Summen er: 150

# Finne det største tallet
tall = [23, 7, 45, 12, 38]
storst = tall[0]

for t in tall:
    if t > storst:
        storst = t

print("Størst:", storst)    # Størst: 45

🔁 Løkke med indeks

Noen ganger trenger du både indeksen og verdien. Da kan du kombinere range() og len():

Løkke med indeks
farger = ["rød", "grønn", "blå", "gul"]

for i in range(len(farger)):
    print(f"Indeks {i}: {farger[i]}")

# Resultat:
# Indeks 0: rød
# Indeks 1: grønn
# Indeks 2: blå
# Indeks 3: gul

📐 Bygge lister med løkker

En vanlig teknikk er å starte med en tom liste og fylle den med en for-løkke:

Bygge en liste
# Lage en liste med kvadrattall
kvadrattall = []

for i in range(1, 6):
    kvadrattall.append(i ** 2)

print(kvadrattall)   # [1, 4, 9, 16, 25]

# Lage en gangetabell
gangetabell_7 = []

for i in range(1, 11):
    gangetabell_7.append(7 * i)

print(gangetabell_7)  # [7, 14, 21, 28, 35, 42, 49, 56, 63, 70]

🔗 Nestet for-løkke

Du kan plassere en for-løkke inne i en annen – dette kalles en nestet løkke:

Nestet løkke: Gangetabell
# Skrive ut gangetabellen (1-5)
for i in range(1, 6):
    for j in range(1, 6):
        resultat = i * j
        print(f"{i} x {j} = {resultat}")
    print("---")   # Skillelinje mellom rad