Lär dig programmera med Python!

Back to All Courses

Lesson 5

Flow control

Flow control är kärnan inom programmering. Det är genom detta som vi bestämmer vad som ska utföras, när det ska göra det, hur ofta, hur länge... osv.

Vi kommer att lära oss 3 olika kontroller:

  • if, elif, else

  • while

  • for

If, elif, else

  1. if bestämmer om någonting ska utföras eller inte. En if-sats innehåller minst ett krav och minst en kodrad under sig som ska genomföras om kravet uppfylls.

  2. elif står egentligen för Else if. Den undersöker om andra krav utöver det som if har ställt uppfylls. Om if:s krav inte uppfylls men elif:s gör det, kommer funktionen som associeras till elif att utföras istället. Man kan ha flera elif-satser efter varandra.

  3. else används när varken if- eller elif-kraven uppfylls. Den agerar alltså som en sista utväg.

I exemplet nedan har vi skrivit ett kort program som läser av vilket tal variabeln z är associerad till .

👇 Observera att programmet nedan måste skrivas och sparas i en ny .py-fil, och kan inte bara köras i Python Shell som de andra exemplen vi gått igenom!

Om talet är under 10 skriver programmet ut "Det var ett litet tal!". Om talet är större än 100 skriver det ut "Det var ett stort tal!". Om talet varken är mindre än 10 eller större än 100 skriver det ut "Talet är lagom!".

z = 53

if (z < 10):
	print("Det var ett litet tal!")
elif (z > 100):
	print("Det var ett stort tal!")
else:
	print("Talet är lagom")
	
# I det här fallet kommer Python Shell att skriva ut "Talet är lagom"

Det är det här som porrsidor använder som extremt effektiv (ironi) säkerhetsåtgärd för att kontrollera åldern på besökaren. Vi kan enkelt skriva ett program där användaren själv får skriva in sin ålder i Python Shell genom input-funktionen:

min_alder = input("Var god skriv in din ålder här: ")

if (int(min_alder) < 18):
	print("Ledsen, men det är artonårsgräns här!")
else:
	print("Välkommen in!")

While-loopen

While används när man vill utföra samma sak om och om igen fram till ett speciellt värde eller ett särskilt moment.

I exemplet nedan använder vi den för att skriva ut alla nummer från 1 till 20.

Vi bestämmer först ett startvärde för variabeln z. Sedan säger vi att så länge som z är mindre än 21 så ska programmet skriva ut z och sedan öka z med 1.

I den första körningen kommer programmet alltså att skriva ut z, som är 1, och sedan öka det till 2. Nu börjar loopen om: eftersom 2 fortfarande är mindre än 21 kommer den att skriva ut 2, sedan öka till 3... osv. Till slut kommer programmet att öka z till 21. Där kommer while-loopen att stoppas och inte skriva ut någonting.

z = 1
while z < 21: # Så länge som z är mindre än 21
  print(z)  # Skriv ut z
  z += 1    # öka z med 1

While-loopen används ofta på hemsidor där man väljer sitt födelseår från en lång lista. Som ni kanske hade gissat är det ingen slavprogrammerare som har suttit och matat in alla födelseår från 2013 hela vägen till 1900 på hemsidan manuellt, utan de skriver istället bara:

year = 2013
while year >= 1900: # Så länge som year är större eller lika med 1900 
  print(year)		# Skriv ut årtalet
  year -= 1		# Minska "year" med 1

While-loopen kan också användas för att ge användaren ett felmeddelande.I exemplet nedan ber programmet användaren att skriva sitt namn. Så länge som användaren väljer att trycka på enter utan att skriva in någonting så kommer bool att returnera False, och programmet säger då: "Du glömde att skriva ditt namn! Skriv in det här: ". När användaren bestämt sig för att skriva någonting kommer programmet att skriva "Tack!".

namn = input("Skriv ditt namn här: ")

while bool(namn) == False: # Så länge som fältet är tomt
  namn = input("Du glömde att skriva ditt namn! Skriv det här: ")
	
print("Tack!") # Vi kom ut ur loopen!

For-loopen

For används när man vill upprepa ett kodblock för varje element i ett objekt (t.ex. en lista).

frukter = ("Äpple", "Päron", "Banan")

for fruit in frukter:
  print(fruit)

OBS! Vi skulle lika gärna kunna byta ut namnet fruit mot vad som helst i vår for-loop (t.ex. x), men det är såklart bra att välja tydliga variabelnamn.