Programmering nivå 1 med Python
Kapitel 5: Villkor
I detta kapitel lär du dig hur program fattar beslut med if, elif, else och logiska uttryck.
Innehållsförteckning
Klicka på ett avsnitt för att hoppa direkt.
5.1 Beslut i program
Hittills har våra program utfört instruktioner rad för rad uppifrån och ner. Alla instruktioner har körts varje gång programmet startar.
I många program behöver datorn däremot fatta beslut. Programmet måste kunna göra olika saker beroende på vad användaren skriver in eller vilka värden som finns i programmet.
Detta kallas villkor.
Exempel på beslut i program
Ett program kan till exempel behöva kontrollera om en person är myndig, om ett tal är större än ett annat eller om en användare har skrivit rätt lösenord.
Programmet kan då fatta ett beslut och göra olika saker beroende på resultatet.
Exempel
age = int(input("Hur gammal är du? "))
if age >= 18:
print("Du är myndig")
Tips: tryck Enter efter : så att VS Code gör indraget direkt.
I detta exempel händer följande:
- Programmet läser in åldern från användaren.
- Programmet kontrollerar om åldern är större än eller lika med 18.
- Om villkoret är sant skrivs ett meddelande ut.
Vad betyder if
Ordet if betyder om.
Programmet tolkar koden ungefär så här:
Om åldern är minst 18
Då skriv ut texten "Du är myndig"
Villkor ger True eller False
Jämförelser ger alltid resultatet True eller False.
age = 20
print(age >= 18)
När vi använder if kontrollerar Python om uttrycket är True.
Om det är True körs koden som hör till villkoret.
Indrag i Python
Python använder indrag för att visa vilken kod som hör till ett villkor. Raden med print körs bara om villkoret är sant.
Om indraget saknas kommer Python att ge ett fel.
Sammanfattning
Med hjälp av if kan ett program kontrollera ett villkor, avgöra om något är sant eller falskt, och köra kod bara när villkoret är sant.
Enkel övning
Skriv ett program som frågar användaren efter ett tal och skriver ut ett meddelande om talet är större än 10.
number = int(input("Skriv ett tal: "))
if number > 10:
print("Talet är större än 10")
5.2 if
I Python används if för att kontrollera ett villkor och fatta ett beslut i ett program.
Programmet kontrollerar om ett villkor är sant. Om villkoret är sant körs koden som hör till villkoret.
Grundstruktur
if villkor:
kod som ska köras
Efter villkoret finns ett kolon :. På nästa rad skrivs koden som ska köras, och den
raden måste vara indragen.
Exempel
age = int(input("Hur gammal är du? "))
if age >= 18:
print("Du är myndig")
Hur programmet fungerar
- Programmet frågar användaren efter ålder.
- Åldern sparas i variabeln age.
- Programmet kontrollerar villkoret age >= 18.
- Om villkoret är sant skrivs texten ut.
Exempel på körning
Hur gammal är du? 20
Du är myndig
Om användaren istället skriver 15 kommer inget meddelande att skrivas ut eftersom villkoret inte är sant.
Villkor i if
Villkoret i ett if-uttryck är ofta en jämförelse, till exempel:
age >= 18
score > 50
temperature < 0
Dessa uttryck ger alltid True eller False.
Viktigt med kolon och indrag
Ett if-uttryck måste innehålla ett kolon efter villkoret och indrag på raden under.
Om kolon eller indrag saknas kommer Python att visa ett felmeddelande.
Flera rader kod
age = int(input("Hur gammal är du? "))
if age >= 18:
print("Du är myndig")
print("Du får rösta i Sverige")
Alla indragna rader körs om villkoret är sant.
Övning
Skriv ett program som frågar användaren efter ett tal och skriver ut ett meddelande om talet är större än 100.
number = int(input("Skriv ett tal: "))
if number > 100:
print("Talet är större än 100")
5.3 if else
Med if kan ett program kontrollera om ett villkor är sant. Men ibland vill man också göra något om villkoret inte är sant.
Då använder man else. Ordet else betyder annars.
Grundstruktur
if villkor:
kod som körs om villkoret är sant
else:
kod som körs om villkoret är falskt
Exempel
age = int(input("Hur gammal är du? "))
if age >= 18:
print("Du är myndig")
else:
print("Du är inte myndig")
Hur programmet fungerar
- Programmet frågar efter ålder.
- Åldern sparas i variabeln age.
- Programmet kontrollerar villkoret age >= 18.
- Om villkoret är sant skrivs ett meddelande ut.
- Annars skrivs ett annat meddelande ut.
Exempel på körning
Hur gammal är du? 20
Du är myndig
Hur gammal är du? 15
Du är inte myndig
Indrag i if else
number = int(input("Skriv ett tal: "))
if number > 0:
print("Talet är positivt")
else:
print("Talet är noll eller negativt")
Alla rader som är indragna efter if körs om villkoret är sant. Alla rader som är indragna efter else körs annars.
Operatorn %
I Python finns operatorn %. Den kallas modulooperatorn och används för att räkna ut
resten vid en division.
print(10 % 3)
Resultat: 1
Därför används % ofta för att kontrollera om ett tal är jämnt eller udda.
print(8 % 2)
Resultat: 0 (eftersom 8 är jämnt delbart med 2).
Övning
Skriv ett program som frågar användaren efter ett tal och skriver ut om talet är jämnt eller udda.
number = int(input("Skriv ett tal: "))
if number % 2 == 0:
print("Talet är jämnt")
else:
print("Talet är udda")
5.4 elif
Ibland behöver ett program kontrollera flera olika villkor. Då används elif, som betyder annars om.
Programmet kontrollerar villkoren i tur och ordning tills ett av dem är sant.
Grundstruktur
if villkor:
kod som ska köras
elif annat villkor:
kod som ska köras
else:
kod som körs om inget villkor är sant
Exempel
temperature = int(input("Ange temperatur: "))
if temperature < 10:
print("Det är kallt")
elif temperature <= 20:
print("Det är lagom")
else:
print("Det är varmt")
Hur programmet fungerar
- Programmet frågar användaren efter temperatur.
- Temperaturen sparas i variabeln temperature.
- Programmet kontrollerar först om temperaturen är under 10.
- Om inte, kontrolleras om temperaturen är 20 eller lägre.
- Om inget av villkoren är sant körs koden under else.
Exempel på körning
Ange temperatur: 5
Det är kallt
Ange temperatur: 15
Det är lagom
Ange temperatur: 27
Det är varmt
Viktigt att tänka på
Villkoren kontrolleras uppifrån och ner. Därför är ordningen viktig.
score = int(input("Hur många poäng fick du? "))
if score >= 80:
print("Du fick ett högt resultat")
elif score >= 50:
print("Du klarade provet")
else:
print("Du klarade inte provet")
Om poängen är 85 körs bara den första delen eftersom villkoret redan är sant.
Övning
Skriv ett program som frågar efter en persons ålder.
Programmet ska skriva ut:
- Barn om åldern är under 13
- Tonåring om åldern är mellan 13 och 19
- Vuxen om åldern är 20 eller mer
5.5 Nästlade villkor
Ibland behöver ett program kontrollera ett villkor inuti ett annat villkor. Detta kallas nästlade villkor.
Det betyder att en if-sats ligger inuti en annan if-sats.
Grundstruktur
if villkor1:
if villkor2:
kod som ska köras
Exempel
age = int(input("Hur gammal är du? "))
citizen = input("Är du svensk medborgare (ja/nej)? ")
if age >= 18:
if citizen == "ja":
print("Du får rösta i svenska val")
else:
print("Du är myndig men får inte rösta")
else:
print("Du är inte myndig ännu")
Hur programmet fungerar
- Programmet frågar efter ålder.
- Programmet frågar om personen är svensk medborgare.
- Programmet kontrollerar först om åldern är minst 18.
- Om personen är myndig kontrolleras också medborgarskapet.
- Programmet skriver ut ett meddelande beroende på resultatet.
Exempel på körning
Hur gammal är du? 20
Är du svensk medborgare (ja/nej)? ja
Du får rösta i svenska val
Hur gammal är du? 20
Är du svensk medborgare (ja/nej)? nej
Du är myndig men får inte rösta
Hur gammal är du? 15
Är du svensk medborgare (ja/nej)? ja
Du är inte myndig ännu
Viktigt att tänka på
När villkor ligger inuti andra villkor blir indragen extra viktiga. Indragen visar vilken kod som hör till vilket villkor.
Varje nytt villkor inuti ett annat villkor behöver ytterligare ett indrag.
Övning
Skriv ett program som frågar efter ålder och om personen har körkort (ja eller nej).
Programmet ska skriva ut:
- Du får köra bil om personen är minst 18 och har körkort
- Du har inte körkort om personen är minst 18 men saknar körkort
- Du är för ung för att köra bil om personen är under 18
5.6 Logiska uttryck
I många program behöver man kontrollera flera villkor samtidigt. Då används logiska operatorer.
De tre vanligaste logiska operatorerna i Python är and, or och
not.
Operatorn and
Operatorn and betyder att båda villkoren måste vara sanna.
age = int(input("Hur gammal är du? "))
if age >= 18 and age <= 65:
print("Du är i arbetsför ålder")
Operatorn or
Operatorn or betyder att minst ett av villkoren måste vara sant.
day = input("Vilken dag är det? ")
if day == "lördag" or day == "söndag":
print("Det är helg")
Operatorn not
Operatorn not betyder inte. Den används för att vända ett villkor.
logged_in = False
if not logged_in:
print("Du måste logga in först")
Kombinera logiska operatorer
age = int(input("Hur gammal är du? "))
has_ticket = input("Har du biljett (ja/nej)? ")
if age >= 18 and has_ticket == "ja":
print("Du får gå in")
else:
print("Du får inte gå in")
Programmet kräver att personen är minst 18 år och har biljett.
Viktigt att tänka på
Logiska operatorer gör det möjligt att skriva mer avancerade villkor.
De används ofta när man behöver kontrollera flera värden samtidigt, flera alternativ eller om något inte är sant.
Övning
Skriv ett program som frågar efter ålder och om personen har studentkort (ja eller nej).
Programmet ska skriva ut:
- Rabatt beviljad om personen är under 20 eller har studentkort
- Ingen rabatt annars
5.7 Program med beslut
Nu har du lärt dig flera sätt att låta ett program fatta beslut.
Med hjälp av if, elif, else och logiska operatorer kan programmet välja olika vägar beroende på användarens inmatning.
Program som använder villkor kallas ofta program med beslut.
Exempel: biljettpris
age = int(input("Hur gammal är du? "))
if age < 12:
print("Biljettpris: 50 kr")
elif age < 18:
print("Biljettpris: 80 kr")
else:
print("Biljettpris: 120 kr")
Hur programmet fungerar
- Programmet frågar efter användarens ålder.
- Åldern sparas i variabeln age.
- Programmet kontrollerar först om åldern är under 12.
- Om inte, kontrolleras om åldern är under 18.
- Om inget av dessa villkor är sant används else.
Exempel: jämnt eller udda tal
number = int(input("Skriv ett tal: "))
if number % 2 == 0:
print("Talet är jämnt")
else:
print("Talet är udda")
Operatorn % kallas modulo och används för att ta fram resten i en division. Om resten blir 0 är talet jämnt.
Exempel: tillgång till ett konto
password = input("Skriv lösenord: ")
if password == "python123":
print("Inloggning lyckades")
else:
print("Fel lösenord")
Varför beslut är viktiga
Utan villkor skulle alla program göra samma sak varje gång. Med beslut kan programmet anpassa sig efter användaren, hantera olika situationer och lösa mer avancerade problem.
Övning
Skriv ett program som frågar efter ett tal.
Programmet ska skriva ut:
- Positivt tal om talet är större än 0
- Noll om talet är 0
- Negativt tal om talet är mindre än 0
5.8 Övningar
I dessa övningar ska du använda det du har lärt dig i kapitlet om villkor.
Du ska använda if, elif, else, logiska operatorer, modulo % och f-strängar för utskrift.
Övning 1
Skriv ett program som frågar efter en persons ålder.
Programmet ska skriva ut:
- Barn om åldern är under 13
- Tonåring om åldern är mellan 13 och 19
- Vuxen om åldern är 20 eller mer
Övning 2
Skriv ett program som frågar efter ett tal och avgör om talet är positivt, negativt eller noll.
Övning 3
Skriv ett program som frågar efter ett tal och avgör om talet är jämnt eller udda.
Tips: använd operatorn %.
Övning 4
Skriv ett program som frågar efter namn och ålder.
Programmet ska skriva ut en hälsning med en f-sträng.
Om personen är minst 18 år ska programmet skriva "Du är myndig", annars "Du är inte myndig".
Övning 5
Skriv ett program som frågar efter poäng på ett prov (0-100).
Programmet ska skriva ut:
- Underkänt om poängen är under 50
- Godkänt om poängen är mellan 50 och 79
- Mycket bra om poängen är 80 eller mer
Övning 6
Skriv ett program som frågar efter ålder och om personen har studentkort (ja eller nej).
Programmet ska skriva ut "Rabatt beviljad" om personen är under 20 eller har studentkort, annars "Ingen rabatt".
Övning 7
Skriv ett program som frågar efter ett tal.
Programmet ska skriva ut "Delbart med 5" om talet kan delas med 5 utan rest, annars "Inte delbart med 5".
Tips: använd operatorn %.
Övning 8
Skriv ett program som frågar efter en temperatur.
Programmet ska skriva ut:
- Kallt om temperaturen är under 10
- Lagom om temperaturen är mellan 10 och 20
- Varmt om temperaturen är över 20
Använd if, elif och else.
5.9 Reflektionsfrågor
- Vad är syftet med en if-sats i ett program?
- Vad är skillnaden mellan if och if else?
- När använder man elif i ett program?
- Varför är ordningen på villkor viktig när man använder if, elif och else?
- Vad betyder operatorn % i Python och när används den?
- Vad gör logiska operatorer som and, or och not?
- Vad betyder det att villkor kan vara nästlade?
- Varför är indrag viktiga i Python när man arbetar med villkor?
- Ge ett exempel på ett program i vardagen där datorer behöver fatta beslut.
- Varför är beslut (villkor) en viktig del av programmering?