| {{ 'ml-lesson-number-slides' | message : article.intro.bblockCount }} |
| {{ 'ml-lesson-number-exercises' | message : article.intro.exerciseCount }} |
| {{ 'ml-lesson-time-estimation' | message }} |
En stor fördel med datorer är att de snabbt kan göra liknande beräkningar tusentals eller miljontals gånger. För att programmera sådana upprepningar använder man loopar med formuleringar som
Dessa två typer av loopar beskrivs med for
- respektive while
-satser, och på denna sida kommer du att lära dig hur man konstruerar sådana loopar.
varde = 0
maxvarde = 100
while varde < maxvarde: print(varde) varde = varde + 5
for
-sats Om man har instruktioner som ska upprepas ett känt antal gånger, t.ex. för varje element i en lista med given längd, kan man använda en for
-sats. Dessa skrivs med kommandot for
följt av ett variabelnamn, kommandot in
och till sist en lista eller uppräkning, avslutat med ett kolon.
for element in ['hej', 'på', 'dig']: print(element)
>
hej
på
dig
['hej', 'på', 'dig']
". Det innebär att variabeln element
sätts till det första värdet i listan och sedan ändras för varje ny upprepning i loopen. Dessa upprepningar kallas iterationer, och i den första kommer alltså element
att vara lika med 'hej'
för sedan bytas till 'på'
i andra iterationen och 'dig'
i tredje.range()
range()
är en funktion som skapar en uppräkning av heltal. Skriver man t.ex. range(5)
får man en uppräkning från 0 till 4. Argumentet man anger ingår alltså inte i uppräkningen. Dessa uppräkningar är av datatypen iterator och används ofta tillsammans med loopar.
for x in range(8): print(x)
>
0
1
2
3
4
5
6
7
Om man skriver två argument i funktionen kommer uppräkningen att ske från det första argumentet till, men inte med, det andra.
for x in range(3,8): print(x)
>
3
4
5
6
7
Lägger man till ytterligare ett argument kommer det att användas som steglängden i uppräkningen.
for x in range(3,8,2): print(x)
>
3
5
7
Skriv ett program som använder en for
-sats för att skriva ut "Party!" tio gånger.
Vi börjar med att skriva en for
-sats som går igenom heltalen från 0 till och med 9 för en variabel x
. Det ger att instruktionerna inne i loopen upprepas 10 gånger.
for x in range(10):
Vi behöver egentligen inte värdet som finns i variabeln x
, bara att instruktionerna i loopen upprepas 10 gånger. För att skapa en for
-sats måste man dock skriva något mellan for
och in
, så vi skriver in ett variabelnamn som sedan aldrig används. Inne i loopen använder vi print()
för att skriva ut vårt meddelande.
for x in range(10): print('Party!')
>
Party!
Party!
Party!
Party!
Party!
Party!
Party!
Party!
Party!
Party!
while
-sats while
-satser används för kodstycken som ska upprepas så länge ett visst villkor är uppfyllt. Det är användbart för loopar där man inte vet hur många upprepningar som krävs. För att skriva en sådan sats börjar man med ordet while
, alltså "medan", följt av ett villkor och ett kolon. Den kod som ska upprepas skrivs med ett indrag.
tal = 1
while tal < 20: print('Talet är', tal) tal = tal*2 + 1
>
Talet är 1
Talet är 3
Talet är 7
Talet är 15
I while
-satser måste man akta sig för oändliga loopar. I programmet nedan ändras aldrig värdet på x, och då är villkoret alltid sant. Programmet kommer då aldrig ur loopen och måste avbrytas manuellt. De flesta programmeringsmiljöer har en stoppknapp för detta.
x = 1
while x < 5: print(x**2)
Skriv en while
-sats som summerar de positiva heltalen, 1,2,3... , tills summan är minst 100 och sedan skriver ut hur många tal som behövdes.
Först måste vi bestämma villkoret. Vi ska addera termer tills summan är 100 eller mer, och alltså har vi en process som pågår medan summan är mindre än 100. Villkorsraden kan därför skrivas så här.
while summa < 100:
Men programmet kan inte börja så, för jämförelsen kan inte göras innan variabeln summa
fått ett värde. Vi måste därför först skapa variabeln summa
, och från början är den 0. Eftersom 0 är mindre än 100 är villkoret sant från början och då kan programmet starta loopen.
summa = 0
while summa < 100:
Sedan måste vi få loopen att räkna upp heltalen. Vi skapar variabeln tal
som börjar på 0 utanför loopen, för att sedan öka med 1 för varje iteration.
summa = 0
tal = 0
while summa < 100: tal = tal + 1
Nu har vi en loop som räknar upp heltal. Varje iteration ska nu avslutas med att talet läggs till summan. Till slut blir då summan så stor att villkoret blir falskt och loopen avslutas.
summa = 0
tal = 0
while summa < 100: tal = tal + 1 summa = summa + tal
När programmet har kommit ut ur loopen finns det senaste talet kvar i variabeln tal
. Detta värde är också antalet tal som har adderats, vilket är vad vi är ute efter. Vi behöver alltså bara skriva ut det.
summa = 0
tal = 0
while summa < 100: tal = tal + 1 summa = summa + tal
print(tal)
>
14
break
break
används i en for
- eller while
-sats för att avbryta den. Det är t.ex. användbart när man söker igenom en lista efter en viss sorts element. I exemplet nedan avbryts sökningen med break
när ett tal mellan 61 och 67 har hittats.
lista = [44, 50, 55, 1, 62, 70, 94, 66, 56, 6]
for tal in lista: if 61 < tal < 67: print(tal) break
>
62