If-satser
Hittills har vi skapat program där koden körts rad för rad från början till slut. Istället för att köra varje kodrad när programmet är igång är det ofta nyttigt att ha delar i programmet som endast körs i vissa situationer.
Till exempel verifierar följande program att användaren är tillräckligt gammal:
alder = int(input("Vad är din ålder? "))
if alder > 17:
print("Du är myndig!")
print("Här får du alltså GTA 6.")
print("Nästa kund!")
När användaren är över 17 år, borde det se ut så här när programmet körs:
Vad är din ålder? 18 Du är myndig! Här får du alltså GTA 6. Nästa kund!
Däremot, om användaren är 17 eller yngre, ser utskriften ut så här:
Vad är din ålder? 16 Nästa kund!
Dessa exempel visar hur ett värde som getts till programmet påverkar vilka delar av koden som körs. Programmet innehåller en villkorssats, som vanligen kallas if-sats, som gör det möjligt att ange vilken kod som ska köras i vilka situationer.
I en if-sats följs nyckelordet if
av ett villkorsuttryck som till exempel kan vara en jämförelse av två värden. Koden som följer körs endast då villkoret uppfylls.
Notera kolontecknet. Om det saknas…
alder = 10
# kolonet saknas i slutet av raden
if alder > 17
print("Du är myndig.")
…kommer ett felmeddelande att skrivas ut när programmet körs:
File "program.py", line 3 if alder > 17 ^ SyntaxError: invalid syntax
Jämförelseoperatorer
Det är vanligt att man vill jämföra två värden sinsemellan. Här följer en tabell över de vanligaste jämförelseoperatorerna i Python:
Operator | Betydelse | Exempel |
---|---|---|
== | Är lika med | a == b |
!= | Är inte lika | a != b |
> | Större än | a > b |
>= | Större än eller lika med | a >= b |
< | Mindre än | a < b |
<= | Mindre än eller lika med | a <= b |
Vi tar nu en titt på ett program som ger olika utskrifter baserat på det värde som användaren anger. Här har vi tre if-satser som kan uppfyllas då värdet är negativt, positivt eller lika med noll:
tal = int(input("Ge ett tal: "))
if tal < 0:
print("Talet är negativt.")
if tal > 0:
print("Talet är positivt.")
if tal == 0:
print("Talet är noll.")
Så här kan det se ut när vi kör programmet med olika indata:
Ge ett tal: 15 Talet är positivt.
Ge ett tal: -18 Talet är negativt.
Ge ett tal: 0 Talet är noll.
Indentering
Python känner igen att en kodsnutt hör till en if-sats på basis av indentering, dvs. instruktioner som dragits in på raden. Alla instruktioner som kommer efter if-raden som indenteras på samma sätt hör till if-satsen. Indenteringen (indragningen, tomrummet) ska vara lika stort för varje rad.
Exempelvis:
losenord = input("Ange lösenord: ")
if losenord == "katt":
print("Du visste lösenordet!")
print("Du måste alltså vara den riktiga användaren...")
print("...eller så är du en hacker.")
print("Programmet avslutades. Tack och hej!")
Du kan använda tab-tangenten för att lägga till mellanrum där det behövs. Om du använder mellanslag är det viktigt att komma ihåg att använda lika många för varje rad. OBS! Använd antingen tab eller mellanslag, blanda inte inom samma if-sats.
Flera texteditorer indenterar automatiskt den följande raden när Enter-tangenten trycks efter ett kolon. Du får bort indenteringen genom att använda Backspace-tangenten i början av en rad.
Boolean-värden och -uttryck
Alla villkor i en if-sats resulterar i ett sanningsvärde, det vill säga sant eller falskt. Till exempel är villkoret a < 5
sant då a
är mindre än fem och falskt då a
är fem eller större.
Denna typ av värden kallas alltså Boolean-värden (efter matematikern George Boole). I Python representerar datatypen bool
ett sanningsvärde. Variabler av typen bool
kan endast ha ett av följande värden: True
(sant) och False
(falskt).
En kodsnutt som resulterar i något av de ovan nämnda värdena kallas Boolean-uttryck. Ett villkor i en if-sats är alltid ett Boolean-uttryck och kan i flera situationer användas som synonym för villkorsuttryck.
Resultatet av ett Boolean-uttryck kan lagras i en variabel på samma sätt som vilken som helst annan numerisk räkneoperation:
a = 3
villkor = a < 5
print(villkor)
if villkor:
print("a är mindre än 5")
True a är mindre än 5
Pythons nyckelord True
och False
kan också användas direkt som sådana. I det följande exemplet körs print
-instruktionen alltid, eftersom värdet på villkoret är True
:
villkor = True
if villkor:
print("Vi når alltid hit")
Vi når alltid hit
Man kan tycka att det i ovanstående exempel inte verkar vara en så nyttig funktion, men senare under kursen kommer vi att se på situationer där vi kan ha mer nytta av Boolean-variabler.
Repetitionsfrågor till denna del:
Log in to view the quiz
Vänligen svara på en kort enkät om materialet i den här veckans modul. Du får ett poäng när du fyllt i enkäten.
Log in to view the quiz
Se dina poäng genom att klicka på cirkeln nere till höger av sidan.