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
- Variabler, datatyper och I/O
- Operatorer och logiska uttryck
- Villkorssatser
- Slingor och iteration
- Listor och sekvenser
- Tupler och mängder
- Dictionaries
- Iteration och list comprehension
- Funktionsdefinitioner och parametrar
- Variablers räckvidd (Scope)
- Moduler och Pythons standardbibliotek
- Läsa och skriva filer
- Felhantering och undantag
- Text- och databearbetning