Flowstyring i Python
Indhold på denne side
Hvad er flowstyring?
Som udgangspunkt vil Python indlæse koden i ens program fra toppen til bunden. Ved hjælp af flowstyring kan man regulere, hvilken rækkefølge som koden skal indlæses i. Denne rækkefølge kan programmeres til at være forskellig alt efter situationen. Et simpelt eksempel på flowstyring kunne være, at programmet vil udprinte Godmorgen hvis klokken er mellem 6 og 12 og Godaften hvis klokken er mellem 18 og 22. Flowstyring-erklæringer begynder med erklæringens navn (f.eks. if), efterfulgt af en betingelse (f.eks. 2 < 3), efterfulgt af betingelsens klausul, dvs. det der skal ske hvis betingelsen er opfyldt (f.eks. print(‘Hej’)).
Boolske værdier
Boolske værdier er endnu en af datatyperne som kan forekomme i Python, som kun kan have to bestemte værdier: True (sand) og False (falsk). Bemærk at de to værdier skal skrives med stort forbogstav og har ikke anførselstegn rundt om sig.
Et udtryk kan enten være rigtigt eller forkert. Hvis udtrykket er rigtigt så vil den boolske værdi være True og hvis udtrykket er forkert , så vil den boolske værdi være False. Variabler kan også indeholde en boolsk værdi:
Værdi_1 = True Værdi_2 = False print(Værdi_1) print(Værdi_2)
Ovenstående kodestykke vil printe værdien af Værdi_1 og Værdi_2. Derfor vil den printe følgende:
True
False
Næsten alle værdier som har en form for indhold evaluerer til True. Det betyder at alle tekstværdier er True undtagen, hvis tekstværdien er helt tom og alle numre er True undtagen 0.
Sammenligningsoperatører
I Python er der operatører som kan sammenligne to udtryk med hinanden og udprinte om sammenligningen er True eller False.
Listen over sammenligningsoperatører kan ses her:
Operatør | Definition |
---|---|
== | Lig med |
!= | Ikke lig med |
< | Mindre end |
> | Mere end |
<= | Mindre end eller lig med |
>= | Mere end eller lig med |
I nedenstående kodestykke ses nogle eksempler på to udtryk som sammenlignes med hinanden. Nogle er korrekte og nogle er forkerte:
print(10 == 10)
print(2 == 5 + 8)
print(5 < 6)
print(3 != 3)
print(5 + 4 > 8 - 3)
Kodestykket vil udprinte følgende fem boolske værdier:
True False True False True
Boolske operatører
Der findes tre boolske operatører. De er and, or og not. Af modsætning til sammenligningsoperatører som sammenligner to udtryk, så vil de boolske operatører sammenligne to boolske værdier.
and
and vil evaluere til True hvis begge udtryk er rigtige. Nedenstående skema viser hvad forskellige udtryk med boolske værdier vil evaluere til:
Udtryk | Evalurerer til... |
---|---|
True and True | True |
True and False | False |
False and True | False |
False and False | False |
Nedenstående kodestykke viser to eksempler på benyttelsen af and:
print(2 + 2 == 4 and 5 + 5 == 10)
print(5 > 7 and 3 + 4 == 7)
Kodestykket vil udprinte følgende to boolske værdier:
True False
or
or vil evaluere til True hvis det ene eller det andet udtryk er rigtigt. Nedenstående skema viser hvad forskellige udtryk med boolske værdier vil evaluere til:
Udtryk | Evalurerer til... |
---|---|
True or True | True |
True or False | True |
False or True | True |
False or False | False |
Nedenstående kodestykke viser to eksempler på benyttelsen af or:
print(2 < 2 or 5 + 5 == 8)
print(5 > 7 or 3 + 4 == 7)
Kodestykket vil udprinte følgende to boolske værdier:
False True
not
not vil evaluere til det modsatte af den boolske værdi som står foran den. Det betyder, at hvis udtrykket foran er True, så vil den evaluere til False og omvendt. Nedenstående skema viser hvad forskellige udtryk med boolske værdier vil evaluere til:
Udtryk | Evalurerer til... |
---|---|
not True | False |
not False | True |
Nedenstående kodestykke viser to eksempler på benyttelsen af not:
print(not 6 < 1)
print(not 2 + 5 == 7)
Kodestykket vil udprinte følgende to boolske værdier:
True False
if, else og elif
De tre erklæringer if, else og elif bestemmer hvad programmet skal gøre alt efter hvilke betingelser der opfyldes.
I nedenstående eksempel er et rutediagram blevet benyttet til at illustrere en situation fra hverdagslivet, hvor man skal foretage nogle valg baseret på if-, else– og elif-erklæringerne:
Ovenstående illustration kan blive direkte oversat til kodesprog ved hjælp af if-, else– og elif-erklæringerne.
if
En if-erklæring vil indlæse sin klausul, hvis erklæringens betingelse er True. Erklæringen kan f.eks. se sådan her ud:
if 2 + 2 == 4:
print('To plus to er lig med fire')
I ovenstående kodestykke er der skrevet følgende:
- Erklæringen if (markeret med rød)
- En betingelse (markeret med blå)
- Et kolon efter betingelsen (markeret med sort)
- En klausul som er indrykket på næste linje (markeret med orange)
Betingelsen er at to plus to skal være lig med fire. Eftersom det er sandt, så vil klausulen blive indlæst og derfor vil programmet indlæse følgende:
To plus to er lig med fire
Bemærk at det er meget vigtigt at klausulen bliver indrykket på næste linje for at koden skal virke. Man kan indrykke klausulen med tasten Tab.
else
En else-erklæring benyttes i forbindelse med en if-erklæring. else-erklæringen vil indlæse sin klausul, hvis if-erklæringens betingelse er False (forkert). Erklæringen kan f.eks. se sådan her ud:
if 2 + 2 == 5:
print('To plus to er lig med fem')
else:
print('To plus to er ikke lig med fem')
I ovenstående kodestykke er der både skrevet en if– og en else-erklæring. else-erklæringen består af følgende elementer:
- Erklæringen else (markeret med rød)
- Et kolon efter erklæringen (markeret med sort)
- En klausul som er indrykket på næste linje (markeret med orange)
Bemærk at else-erklæringen ikke har nogen betingelse, eftersom den kun vil indlæse sin klausul, hvis if-erklæringen er False.
Betingelsen i if-erklæringen er at to plus to er lig med fem. Da dette ikke er sandt, så vil programmet indlæse else-erklæringens klausul:
To plus to er ikke lig med fem
elif
En elif-erklæring kan benyttes i forbindelse med at man vil have flere klausuler som kan blive indlæst. elif står for else if og kan lave endnu en betingelse, hvis betingelsen før var False. Erklæringen skal stå efter if-erklæringen og før else-erklæringen. Der kan være ubegrænsede elif-erklæringer i koden.
En elif-erklæring kan se sådan her ud:
if 2 + 2 == 5:
print('To plus to er lig med fem')
elif 2 + 2 == 4:
print('To plus to er lig med fire')
else:
print('Jeg ved ikke hvad svaret er')
I ovenstående eksempel er der både lavet en if– elif– og else-erklæring. elif-erklæringen består af følgende elementer:
- Erklæringen elif (markeret med rød)
- En betingelse (markeret med blå)
- Et kolon efter betingelsen (markeret med sort)
- En klausul som er indrykket på næste linje (markeret med orange)
Den første betingelse er at to plus to er lig med fem. Da dette er forkert, så vil programmet gå videre til næste betingelse i elif-erklæringen som er at to plus to er lig med fire. Da dette er sandt vil programmet indlæse elif-erklæringens klausul som er følgende:
To plus to er lig med fire
while, break og continue
Erklæringerne while, break og continue er tre andre erklæringer som kan benyttes til at styre kodens flow.
I nedenstående eksempel er et rutediagram blevet benyttet til at illustrere en situation fra hverdagslivet, hvor man skal foretage nogle valg baseret på while-, break- og continue-erklæringerne:
Ovenstående illustration kan blive direkte oversat til kodesprog ved hjælp af while-, break- og continue-erklæringerne.
while
En while-erklæring vil indlæse sin klausel igen og igen indtil dens betingelse ikke længere er True og på den måde skabe et loop i koden. En while-erklæring kan se sådan her ud:
x = 0
while x < 5:
x = x + 1
print('Hej')
I ovenstående eksempel er der lavet en while-erklæring. Erklæringen består af følgende elementer:
- En variabel med værdien 0 (markeret med lyserød)
- Erklæringen while (markeret med rød)
- En betingelse (markeret med blå)
- Et kolon efter betingelsen (markeret med sort)
- En klausul som er indrykket på næste linje (markeret med orange)
For hver gang at klausulen bliver indlæst, så vil programmet lægge 1 til værdien i variablen x og udprinte Hej. Når x kommer op på værdien 5, så vil klausulen ikke længere blive indlæst, da betingelsen ikke længere er True. Programmet vil derfor indlæse Hej fem gange:
Hej Hej Hej Hej Hej
Bemærk, at while-klausulen vil indlæses i en uendelighed, hvis ikke man sørger for, at betingelsen på et tidspunkt vil blive False.
Man kan også tilføje en else-erklæring efter while-erklæringen som vil blive indlæst når koden kommer ud af while-loopet.
break
Erklæringen break vil stoppe med at indlæse klausulen selvom betingelsen stadig er True. En break-erklæring kan benyttes på følgende måde:
x = 0
while x < 5:
if x == 3:
break
x = x + 1
print('Hej')
I ovenstående eksempel er der indsat en if-erklæring inde i while-erklæringen som siger, at hvis x er lig med tre, så vil break-erklæringen blive indlæst, som gør, at while-loopet stopper. Det betyder at ovenstående kode kun vil nå at indlæse Hej tre gange inden while-loopet stopper:
Hej Hej Hej
continue
Erklæringen continue vil stoppe den nuværende gentagelse af klausulen. Hele while-loopet vil ikke stoppe, men bare fortsætte med den næste gentagelse af klausulen. En continue-erklæring kan benyttes på følgende måde:
x = 0
while x < 5:
x = x + 1
if x == 3:
continue
print('Hej')
I ovenstående eksempel er der indsat en if-erklæring inde i while-erklæringen som siger, at hvis x er lig med tre, så vil continue-erklæringen blive indlæst, som gør, at gentagelsen stopper. Det betyder at ovenstående kode kun vil indlæse Hej fire gange, da den tredje gentagelse blev afbrudt af continue-erklæringen.
Hej Hej Hej Hej
for og range()
Med while-erklæringen kan man indlæse en klausul, så længe en betingelse er opfyldt. Hvis man vil indlæse en klausul et bestemt antal gange, så skal man benytte erklæringen for sammen med funktionen range(). De kan benyttes på følgende måde:
for x in range(5):
print(x)
I ovenstående eksempel er der lavet en for-erklæring og en range()-funktion. Kodestykket består af følgende elementer:
- En for-erklæring (markeret med blå)
- En variabel som hedder x (markeret med rød)
- En in-erklæring (markeret med lyserød)
- En range()-funktion med parameterværdien 5 (markeret med grøn)
- Et kolon efter betingelsen (markeret med sort)
- En klausul som er indrykket på næste linje (markeret med orange)
Parameteret i range() skal være et tal som indikerer antallet af gange som klausulen skal gentages.
Kodestykket vil indlæse klausulen fem gange. I klausulen bliver variablen x udprintet. Den første gang vil x være lig med nul. For hver gentagelse vil x stige med én. x vil derfor starte med at være nul og gå op til fire. Den vil kun gå op til, og ikke inkludere, selve tallet som står i range()-parameteren, så derfor er fem ikke inkluderet:
0
1
2
3
4
range() kan have flere end én parameter. Når der kun er én værdi som parameter, så vil værdien indikere antallet af gange som klausulen skal gentages. Hvis der er to parameter-værdier, så vil den første parameter indikere hvor loopet skal starte og den anden parameter vil indikere hvor loopet skal stoppe:
for x in range(5, 10):
print(x)
Ovenstående kodestykke vil indlæse følgende:
5
6
7
8
9
Hvis der er tre parameter-værdier, så vil den første parameter indikere hvor loopet skal starte, den anden parameter vil indikere hvor loopet skal stoppe og den tredje parameter vil indikere antallet som variablen skal stige med for hver gentagelse:
for x in range(10, 20, 2):
print(x)
Ovenstående kodestykke vil indlæse følgende:
10
12
14
16
18
Bemærk at parameter-værdiernes datatype for range()-funktionen kun kan være heltal.