Flowstyring i Python

 

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:

 

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:

 

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:

 

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:

 

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:

Illustration af if, else og elif

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 ifelif– 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:

while, break og continue illustreret

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.

 

Gå videre til Funktioner i Python her →