Python for lærere – Egentrening
Fire konsepter
4 Vilkår
4.1 If - else
Funksjoner
Løkker
Vi har allerede sett at vi kan benytte oss av vilkår i while-løkker, men denne gangen skal vi se hvordan vi kan sette vilkår i en kode uten løkker.
La oss se for oss at vi kaster en terning 100 ganger, så vil vi sjekke hvor mange ganger vi slo 5 eller 6 (over 4):
from random import randint
teller = 0
for i in range(100):
terning = randint(1, 6)
if terning > 4:
teller = teller + 1
print(teller)
Vilkåret i denne koden har vi inne i en for-løkke, så dette vilkåret blir kjørt 100 ganger. Legg merke til at også if-tester bruker innrykk til å vise hva som er inne i if-testen. Alt som skal gjøres, dersom vilkåret stemmer, må være rykket inn. Hver gang sjekker den om terning er større en 4, og hvis det stemmer, så øker teller med 1. Tilslutt, når løkka har kjørt ferdig, så skrives teller ut til skjermen. Hvor mange ganger BØR det bli?
Hvor ofte blir summen av 2 terninger 7? Kanskje vi kan simulere og telle? Prøv…
Skal vi ta et litt annet, og enklere, eksempel:
lys = "Gul"
if lys == "Grønn":
print("Gå!")
else:
print("Stopp!")
Her har vi en enkel if-test, men denne gangen har vi bygget den ut med en ‘else’. Altså hva skal gjøres dersom vilkåret ikke stemmer.
Prøv å endre verdien i linje 1 og se om du får forventede utslag. Skarpe blikk vil nok reagere på vilkåret på linje 3; det er dobbelt erlik-tegn! De fleste elever husker bare at det skal være dobbelt erlik i if-tester, men vi bør kunne ha en forklaring:
=-tegnet benyttes i python til å tilordne en variabel en verdi. ‘lys = “grønn”‘ vil altså gi variabelen verdien “grønn”. Hvis vi spør OM den er grønn, altså et vilkår, da må vi bruke dobbelt erlik-tegn. Her er noen vanlige vilkår:
- alder > 18 (større enn)
- alder < 12 (mindre enn)
- teller == 100 (er lik)
- navn != “Abel” (er ulik)
- navn in fornavn (sjekker om navn er i lista fornavn)
La oss lage et program som gir oss en hoderegningsoppgave, og som får et svar fra brukeren. Deretter sjekker den om vi har svart riktig, og i såfall så skal den skrive litt skryt:
from random import randint
tall_1 = randint(20, 40)
tall_2 = randint(10, 20)
print(tall_1, "-", tall_2, "=")
svar = int(input())
if svar == tall_1 - tall_2:
print("Oiii...det var riktig!")
else:
print("Uffda!")
Se gjennom koden, og sjekk om den gir mening.
Det var if-tester det, men der er ikke alltid at hendelser bare har to utfall. Hva hvis vi vil sjekke for flere utfall? Vi må se på ‘elif’.
DigitAbel – for dypere læring
