Villkorssatser

Styra programflödet utifrån olika betingelser med if, elif och else.

Ca 50 min · del av Programmering i Python

Begrepp i lektionen

  • if-sats
  • elif
  • else
  • indentering
  • kodblock

Efter den här lektionen kan du styra programflödet i Python med if, elif och else, förstå hur indentering skapar kodblock samt kombinera villkor med logiska operatorer.

Vad är en villkorssats?

I programmering behöver våra program ofta fatta beslut baserat på indata eller beräkningar. En villkorssats låter programmet välja olika vägar (grenar) beroende på om ett villkor är sant (`True`) eller falskt (`False`).

I Python skapas ett grundläggande villkor med nyckelordet `if`. Villkoret bygger på jämförelseoperatorer:

  • `==` (lika med)
  • `!=` (inte lika med)
  • `<` (mindre än)
  • `>` (större än)
  • `<=` (mindre än eller lika med)
  • `>=` (större än eller lika med)

Exempel:

python

alder = 20

if alder >= 18:

print("Du är myndig!")

Om variabeln `alder` har värdet 20 utvärderas uttrycket `alder >= 18` till `True`. Då körs koden i det indenterade blocket nedanför.

Indentering och kodblock i Python

Till skillnad från många andra programmeringsspråk (som använder krullparenteser `{}` för att avgränsa kod) använder Python indentering (indrag) för att definiera vilka rader som hör till ett kodblock.

Ett villkor avslutas alltid med ett kolontecken (`:`). Alla rader som ska köras när villkoret är sant måste dras in med lika mycket utrymme (standarden i Python är 4 mellanslag).

Korrekt struktur:

python

temperatur = 25

if temperatur > 20:

print("Det är varmt ute!") # Indenterad rad (hör till if)

print("Kom ihåg solglasögon.") # Indenterad rad (hör till if)

print("Ha en bra dag!") # Ej indenterad (körs alltid)

Om du glömmer indenteringen uppstår ett `IndentationError` och programmet kan inte köra.

Flera grenar med elif och else

När du vill hantera mer än ett utfall räcker det inte med bara `if`. Då använder vi `elif` (kort för *else if*) och `else`.

  • `if`: Testar det första villkoret.
  • `elif`: Testar ett nytt villkor om alla föregående villkor var falska (`False`). Du kan ha hur många `elif`-rader som helst.
  • `else`: Fångar upp alla fall där inget av de tidigare villkoren var sant. `else` kräver inget eget villkor.

Exempel på betygssättning:

python

poang = 82

if poang >= 90:

betyg = "A"

elif poang >= 80:

betyg = "B"

elif poang >= 70:

betyg = "C"

else:

betyg = "F"

print("Ditt betyg är:", betyg)

Python testar villkoren ovanifrån och nedåt. Så fort ett villkor stämmer körs det blocket och hela resten av `if-elif-else`-kedjan hoppas över.

Kombinera villkor med logiska operatorer

Ibland behöver du kontrollera flera saker samtidigt. I Python använder vi de logiska operatorerna `and`, `or` och `not`.

1. `and`: Returnerar `True` endast om båda uttrycken är sanna.

2. `or`: Returnerar `True` om minst ett av uttrycken är sant.

3. `not`: Inverterar värdet (`not True` blir `False`).

Exempel med and:

python

alder = 25

har_korkort = True

if alder >= 18 and har_korkort:

print("Du får köra bil.")

Kortslutningsutvärdering (Short-circuiting):

Ifall det första villkoret i ett `and`-uttryck är `False`, behöver Python inte ens kontrollera det andra uttrycket – hela resultatet måste bli `False`. På samma sätt, om det första i ett `or`-uttryck är `True`, är hela uttrycket `True` direkt.

Hela kursen