Total fremgang
0%
1.9: Øvelser bestått0 av 0

0% fullført

Lærebok/Kapittel 1.9

Kapittel 1.9

For-løkker og range()

I dette kapitlet skal du lære om for-løkker, range()-funksjonen, iterering over lister, og list comprehension.

Lister og for-løkker
Kapittel 1.9: For-løkker og range()
Se denne videoen før du starter med kapitlet for en best mulig introduksjon.

Hva er en for-løkke?

En for-løkke brukes til å iterere (gå gjennom) elementer i en sekvens, som en liste, streng eller range. For-løkker er ofte enklere å bruke enn while-løkker når vi vet hvor mange ganger vi skal gjenta noe.

Eksempel: For-løkke med liste
Python
Loading...

range()-funksjonen

range() genererer en sekvens av tall. Dette er perfekt for for-løkker når vi vil gjenta noe et bestemt antall ganger.

range(stopp)
Tall fra 0 til (ikke med) stopp
range(5) gir: 0, 1, 2, 3, 4
range(start, stopp)
Tall fra start til (ikke med) stopp
range(2, 6) gir: 2, 3, 4, 5
range(start, stopp, steg)
Tall fra start til stopp med gitt steg
range(0, 10, 2) gir: 0, 2, 4, 6, 8
Eksempel: range()-funksjonen
Python
Loading...
Oppgave 1.33 (for_kopi.py)
Kopier koden i det øverste eksempelet på forrige side og kjør koden. Pass på at utskriften blir den samme. Legg til et ekstra element i listen som skrives ut. Kjør koden. Gjør en endring på ordet element i koden slik at det istedenfor element står i. Pass på å bytte ut begge steder det står element før du nok engang kjører koden.
Lett
Python
Loading...
Løsningsforslag Oppgave 1.33
Se videoløsning for denne oppgaven.

Iterere over lister med indeks

Ofte trenger vi både elementet og posisjonen (indeksen) når vi itererer. Vi kan bruke enumerate() eller range(len()) for dette.

Med range(len())

Eksempel: range(len())
Python
Loading...

Med enumerate()

Eksempel: enumerate()
Python
Loading...
Oppgave 1.34 (priser.py)

Definer x = 1, samlet_pris = 0 og listen priser = [34,80,20,19,128] (Allerede skrevet i koden)

a

Lag en for løkke (for pris in priser:) som kjører koden: print("Varenummer:", x, "koster", pris, "kroner.") samlet_pris = samlet_pris + pris x = x+1

b

Når koden har blitt kjørt, skriv ut samlet_pris sammen med en passende svarsetning.

Lett
Python
Loading...
Løsningsforslag Oppgave 1.34
Se videoløsning for denne oppgaven.

List comprehension

List comprehension er en elegant måte å lage lister på i Python. I stedet for å bruke en vanlig for-løkke, kan vi skrive alt på én linje.

Eksempel: List comprehension
Python
Loading...
Oppgave 1.35 (for_funk.py)
a

Definer funksjonen f(x) slik at den returnerer x**2 (x i andre).

b

Sett x = [0,1,2,3,4] og lag en tom liste y = [] (utenfor funksjonen).

c

Lag en for-løkke (for i in x:) som kjører koden y.append(f(i))

d

Når koden er utført, skriv ut resultatet (y).

Medium
Python
Loading...
Løsningsforslag Oppgave 1.35
Se videoløsning for denne oppgaven.
Oppgave 1.36 (range.py)
a

Sett r_1 = range(5). Hva blir de 3 første elementene i r_1? Det siste? Test antagelsen din ved å skrive print(r_1[0], r_1[1], r_1[2], r_1[-1])

b

Sett r_2 = range(3,10). Hva blir de 3 første elementene i r_2? Det siste? Test antagelsen din ved å skrive print(r_2[0], r_2[1], r_2[2], r_2[-1])

c

Sett r_3 = range(4,20,3). Hva tror du vil være de 3 første elementene i r_3? Hva med det siste? Test antagelsen din ved å skrive print(r_3[0], r_3[1], r_3[2], r_3[-1])

Lett
Python
Loading...
Løsningsforslag Oppgave 1.36
Se videoløsning for denne oppgaven.
Oppgave 1.37 (varer_priser.py)
I denne koden har vi med en liste med varer og i en annen liste så har vi prisene til disse varene lagret (i riktig rekkefølge selvsagt). Husk at len()-funksjonen returnerer lengden til en liste. Lag listene vare = ["Eple", "Brød", "Skinke"] og pris = [10,20,25] Skriv for i in range(len(vare)): for å kjøre koden print(vare[i], " koster ",pris[i], " kroner") Kjør koden. NB: Her kunne vi også bruk 3 istedenfor len(varer), men da må vi i så fall endre koden vår om vi ønsker å forlenge listene. Vi får vite at en Paprika koster 12 kroner på denne butikken. Legg til informasjonen på relevante steder i listene og kjør koden igjen
Medium
Python
Loading...
Løsningsforslag Oppgave 1.37
Se videoløsning for denne oppgaven.
Oppgave 1.38 (for_range_funk.py)
Definer funksjonen og sett den lik . Sett x = [] og y = [] Bruk range(start, stopp, skritt) til å lage en for-løkke som lagrer alle tallene 10,20,30,...,100 i x. Modifiser for-løkken slik at den samtidig lagrer f(10), f(20)...f(100) i y Ved hjelp av en ny for-løkken la programmet skrive ut (10,f(10)), (20,f(20))...(100,f(100))
Vanskelig
Python
Loading...
Løsningsforslag Oppgave 1.38
Se videoløsning for denne oppgaven.

Oppsummering

For-løkker itererer over sekvenser (lister, strenger, range)

range() genererer tallsekvenser: range(stopp), range(start, stopp), range(start, stopp, steg)

enumerate() gir både indeks og verdi ved iterering

List comprehension: [uttrykk for variabel in sekvens if betingelse]

For-løkker er ofte enklere enn while når antall iterasjoner er kjent