Valg med if, elif og else

Med if kan programmet velge hva det gjør. Linjene som hører til valget skrives INNRYKKET (vanligvis fire mellomrom), og linjen med betingelsen avsluttes med et KOLON. Programmet sjekker betingelsene ovenfra og ned, og kjører bare den FØRSTE grenen som er sann. elif («ellers hvis») legger til flere tester, og else fanger opp alt som er igjen.

poeng = 62
if poeng >= 80:
    print('Meget bra')
elif poeng >= 50:
    print('Bestått')
else:
    print('Ikke bestått')

Her er poeng >= 80 usant, så programmet hopper videre til poeng >= 50, som er sant. Programmet skriver ut Bestått, og else-grenen blir aldri sjekket.

Slik sjekkes grenene for poeng = 62
GrenBetingelseSvarKjøres?
ifpoeng >= 80Falsenei
elifpoeng >= 50Trueja, og så stopper programmet
else––nei, aldri nådd

Tips

  • Glemmer du kolonet etter betingelsen, eller rykker ikke inn linjen under, får du en feilmelding. Innrykket er det som forteller Python hva som hører til valget.
  • Bare én gren i en if/elif/else-kjede kjøres. Skriver du i stedet flere separate if, blir HVER av dem sjekket for seg, og flere kan kjøres.
  • Bruk == i betingelsen, ikke =. if x = 5: gir feilmelding.

Eksempel: Hvilken gren kjøres?

Et program har temp = 4, og tester if temp < 0: (skriver «frost»), elif temp < 10: (skriver «kaldt») og else: (skriver «mildt»). Hva skriver programmet ut?

Løsning:
  1. Vi sjekker betingelsene ovenfra og ned
  2. temp < 0 er 4 < 0, og det er usant, så «frost» hoppes over
  3. temp < 10 er 4 < 10, og det er sant, så denne grenen kjøres
  4. programmet stopper der og else blir ikke sjekket. Det skrives ut kaldt.
Gren for gren
GrenBetingelseSvarUtskrift
iftemp < 0False–
eliftemp < 10Truekaldt
else–ikke nådd–

Oppgaver

Prøv minst én oppgave på hvert nivå.

Lett(3)

L-31Et program har x = 5 og kjører if x > 3: som skriver «stor». Hva skrives ut?

Vis fasit
  1. x > 3 er 5 > 3, og det er sant
  2. innrykket kjøres
  3. stor

L-32Et program har x = 2 og kjører if x > 3: som skriver «stor». Hva skrives ut?

Vis fasit
  1. x > 3 er 2 > 3, og det er usant
  2. innrykket hoppes over, og det finnes ingen else
  3. ingenting skrives ut

L-33Hva må stå på slutten av en linje som if x > 3?

Vis fasit
  1. Python krever et kolon etter betingelsen i if, elif og else
  2. et kolon (:)
Middels(3)

M-31Programmet fra teksten har poeng = 62. Betingelsene er poeng >= 80 (Meget bra), poeng >= 50 (Bestått) og ellers «Ikke bestått». Hva skrives ut?

Vis fasit
  1. 62 >= 80 er usant
  2. 62 >= 50 er sant
  3. Bestått

M-32Hvilken gren kjøres når flere betingelser i en if/elif/else-kjede er sanne samtidig?

Vis fasit
  1. Python sjekker ovenfra og ned og stopper ved den første sanne
  2. bare den første som er sann

M-33Et program har x = 15. Det tester if x > 10: (skriver «A»), elif x > 5: (skriver «B») og else: (skriver «C»). Hva skrives ut?

Vis fasit
  1. x > 10 er 15 > 10, sant
  2. første gren kjøres og kjeden stopper
  3. A
Vanskelig(3)

V-31Et program har x = 15 og tre SEPARATE if-linjer (ingen elif/else): if x > 10: skriver «A», if x > 5: skriver «B», og if x <= 5: skriver «C». Hva skrives ut?

Vis fasit
  1. Hver if sjekkes for seg
  2. 15 > 10 er sant, så A
  3. 15 > 5 er også sant, så B
  4. 15 <= 5 er usant, ingen C
  5. A og B
Tre separate if-er
LinjeBetingelseSkrives ut?
if x > 10:TrueA
if x > 5:TrueB
if x <= 5:False–

V-32Et program setter pris = 800. Hvis pris > 500, trekkes 100 fra pris. Til slutt skrives pris ut. Hva skrives ut?

Vis fasit
  1. pris > 500 er 800 > 500, sant
  2. pris blir 800 - 100 = 700
  3. 700
Sportabell
Etterpris
pris = 800800
if pris > 500: (sant)800 - 100 = 700

V-33Et program tester if n % 2 == 0: (skriver «partall») og ellers «oddetall». Hva skrives ut for n = 15?

Vis fasit
  1. 15 % 2 er resten når 15 deles på 2
  2. 15 = 7 · 2 + 1, resten er 1
  3. 1 == 0 er usant
  4. oddetall
Partall eller oddetall
UttrykkVerdi
15 % 21
15 % 2 == 0False
Utskriftoddetall