for- og while-løkker
Contents
for- og while-løkker¶
I en «for»-løkke kan vi gjenta visse utregninger flere ganger. Vi lar ofte en variabel gjennomløpe en liste eller tilsvarende og så gjør visse operasjoner for hver av verdiene til variabelen. Om for eksempel variabelen i skal gjennomløpe tallene 0, 1, 2, 3, 4 og 5, så kan vi bruke range-funksjonen.
range-funksjonen
range(start, stopp [, steg]) gir oss tallene fra og med start til stopp. Steglengden er avstanden mellom hvert av tallene du får.
range(3, 10, 2) vil gi oss tallene 3, 5, 7, 9.
Eksempel 1¶
Print ut de 10 første oddetallen.
Løsning:
for i in range(10):
print(2*i+1)
1
3
5
7
9
11
13
15
17
19
Legg merke til at om vi ikke oppgir start-verdien, så brukes 0 som startveri.
Eksempel 2¶
Regn ut summen av de 100 første oddetallen.
Løsning:
# Må først lage en variabel S som skal bli den ønskede summen.
S = 0
# Så legger vi til alle de 100 oddetallene til S:
for i in range(100):
S = S+ 2*i+1
print(S)
10000
while-løkker¶
I programmet over, visste vi hvor mange tall vi skulle legge til S. Slik er det ikke alltid, noe neste eksempel viser.
Eksempel 3¶
Adder alle kvadrattallene som er mindre enn 1000.
Her er «problemet» at vi i utgangspunktet ikke vet hvor mange kvadrattall vi skal legge sammen. Dette kunne vi jo selvsagt regnet ut, siden \(\sqrt{1000}\approx 31.62\). Vi kunne med andre ord løst oppgaven slik:
S = 0
for i in range(1, 32):
S = S + i**2
print(S)
10416
I stedet for å regne ut antall kvadrattall som skal adderes, kan vi bruke en while-løkke.
while <betingelse >:
kode som kjøres så lenge betingelsen er sann
S = 0
i = 1
while i**2 < 1000:
S = S + i**2
i = i + 1
print(S)
10416
Vi ser at vi får samme svaret!
Pass på!
Vi må definere variabelen i før selve while-løkken og vi må passe på å øke denne i løkken.