Enkel repetition

En sista viktig pusselbit i programmering är möjligheten att upprepa kod, att köra samma rad flera gånger. I programmering kallar vi det för en "loop".

Vi ska introducera nyckelordet while och se att det är likt en if-sats som vi redan känner till.

Upprepning

Titta på följande kod:

Programmet består av sju rader, och datorn går igenom dem en i taget. När sista raden är klar så är programmet slut. Därför får vi bara gissa en enda gång.

Vi vill gärna fortsätta gissa tills vi träffar rätt!

Det kan vi göra såhär:

import random

rätt_svar = random.randint(1, 10)
gissning = 0

while gissning != rätt_svar:
    gissning = int(input("Gissa ett tal mellan 1 och 10: "))

    if gissning == rätt_svar:
        print("Rätt!")
    else:
        print("Fel :(")

Instruktionen "while" fungerar precis som "if", med ett logiskt villkor efteråt. Om villkoret är sant så utförs de indenterade raderna efteråt.

Sedan återvänder programmet och kontrollera While-villkoret igen. Om det fortfarande är sant så kör utför den de indenterade raderna igen. Och igen. Och igen. Tills villkoret inte längre är sant.

Oändlig loop

Ett vanligt fel är att skriva något sånt här:

import random
rätt_svar = random.randint(1, 10)
gissning = int(input("Gissa ett tal mellan 1 och 10: "))
while gissning != rätt_svar:
    if gissning == rätt_svar:
        print("Rätt!")
    else:
        print("Fel :(")

Skillnaden är nu att vi frågar användaren om gissningen i början, men inte inuti loopen. Det gör att programmet skriver ut "Fel :(" om och om igen utan att faktiskt fråga om en ny gissning.

Här är en annan oändlig loop:

import time
while True:
    time.sleep(1)
    print("loop")

Vad är villkoret här? Det är bara "True", alltså "sant", så det är bokstavligen aldrig falskt. Så loopen kommer fortsätta om och om igen.

En loopande sköldpadda

Ett annat sätt att se hur kod repeterar är med vår vän turtle:

import turtle
import time

turtle.color('red')

while True:
    turtle.forward(10)
    turtle.left(10) 
    time.sleep(0.25)

Fundera på vad som kommer hända här, och provkör sedan programmet själv!

Har du en fråga du vill ställa om Enkel repetition? Ställ den på Pluggakuten.se
Har du hittat ett fel, eller har du kommentarer till materialet på den här sidan? Mejla matteboken@mattecentrum.se
Läs sidan på andra språk

I den här videon använder vi en while-loop för att bygga ett annat spel som testar våra mattekunskaper.

  • Upprepning: Kod som körs mer än en gång genom att programmet “hoppar tillbaka” till en tidigare rad.
  • Loop: Ett annat ord för upprepning inom programmering. I Python använder vi nyckelorden while och for.
  • Oändlig loop: En upprepning av kod som kanske aldrig avslutas.
  • If-sats: Nyckelordet “if” följt av ett logiskt påstående används för att låta våra program fatta beslut.
  • Logiskt påstående: En jämförelse mellan två värden. Till exempel “ålder > 18” eller “namn == marcus”.
Svårighetsgrad