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.
| Gren | Betingelse | Svar | Kjøres? |
|---|---|---|---|
if | poeng >= 80 | False | nei |
elif | poeng >= 50 | True | ja, 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 separateif, 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?
- Vi sjekker betingelsene ovenfra og ned
temp < 0er 4 < 0, og det er usant, så «frost» hoppes overtemp < 10er 4 < 10, og det er sant, så denne grenen kjøres- programmet stopper der og
elseblir ikke sjekket. Det skrives ut kaldt.
| Gren | Betingelse | Svar | Utskrift |
|---|---|---|---|
if | temp < 0 | False | – |
elif | temp < 10 | True | kaldt |
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
x > 3er 5 > 3, og det er sant- innrykket kjøres
- stor
L-32Et program har x = 2 og kjører if x > 3: som skriver «stor». Hva skrives ut?
Vis fasit
x > 3er 2 > 3, og det er usant- innrykket hoppes over, og det finnes ingen
else - ingenting skrives ut
L-33Hva må stå på slutten av en linje som if x > 3?
Vis fasit
- Python krever et kolon etter betingelsen i
if,elifogelse - 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
- 62 >= 80 er usant
- 62 >= 50 er sant
- Bestått
M-32Hvilken gren kjøres når flere betingelser i en if/elif/else-kjede er sanne samtidig?
Vis fasit
- Python sjekker ovenfra og ned og stopper ved den første sanne
- 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
x > 10er 15 > 10, sant- første gren kjøres og kjeden stopper
- 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
- Hver
ifsjekkes for seg - 15 > 10 er sant, så A
- 15 > 5 er også sant, så B
- 15 <= 5 er usant, ingen C
- A og B
| Linje | Betingelse | Skrives ut? |
|---|---|---|
if x > 10: | True | A |
if x > 5: | True | B |
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
pris > 500er 800 > 500, santprisblir 800 - 100 = 700- 700
| Etter | pris |
|---|---|
pris = 800 | 800 |
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
15 % 2er resten når 15 deles på 2- 15 = 7 · 2 + 1, resten er 1
1 == 0er usant- oddetall
| Uttrykk | Verdi |
|---|---|
15 % 2 | 1 |
15 % 2 == 0 | False |
| Utskrift | oddetall |