Osa 2

Mera om if-satser

Vi tar nu en titt på ett program som ber användaren att mata in ett tal och därefter skriver ut ett meddelande vars innehåll beror på om talet är negativt, positivt eller lika med noll:

siffra = int(input("Ge ett tal: "))

if siffra < 0:
    print("Talet är negativt")

if siffra >= 0:
    print("Talet är positivt eller noll")

Det här verkar något klumpigt och det finns en del upprepning. Vi vill ju bara köra ett av if-blocken eftersom talet alltid är antingen mindre än, större än eller lika med noll. Endast ett av villkoren tal < 0 och tal >= 0 kan samtidigt vara sant. Därför är den första if-satsen den enda som behövs – om villkoret är sant är talet negativt, annars är talet noll eller positivt.

I stället för att skapa två if-satser kan vi skapa en förgrenad if-sats, där en av grenarna körs då alla villkor är falska. Det här kallas else-sats.

Så här kan vi skriva om det föregående exemplet:

siffra = int(input("Ge ett tal: "))

if siffra < 0:
    print("Talet är negativt")
else:
    print("Talet är positivt eller noll")

I en if-else-sats kommer alltid endast en av grenarna att köras. Se följande bild:

2 2 1

Obs! Det kan aldrig finnas en else-gren före en if-gren. En if-gren och en else-gren bildar en if-else-sats.

Följande exempel kollar om det tal användaren matar in är jämnt eller inte. För att kolla det använder vi restoperatorn %, som anger resten när två heltal divideras. När ett tal divideras med två är det jämnt då resten är noll. Annars är talet udda.

tal = int(input("Ge ett tal: "))

if tal % 2 == 0:
    print("Talet är jämnt")
else:
    print("Talet är ojämnt")
Exempelutskrift

Ge ett tal: 5 Talet är ojämnt

Ett annat exempel där strängar jämförs:

korrekt = "katt"
losenord = input("Ange lösenord: ")

if losenord == korrekt:
    print("Välkommen")
else:
    print("Tillträde förbjudet")

Så här kan det se ut när koden körs:

Exempelutskrift

Ange lösenord: katt Välkommen

Exempelutskrift

Ange lösenord: koltrast Tillträde förbjudet

Flera grenar med elif-satser

Ofta behöver ett program beakta fler än två alternativ. Till exempel kan resultatet för en fotbollsmatch se ut på tre sätt: hemmalaget vinner, bortalaget vinner eller oavgjort.

En if-sats kan bestå av elif-grenar – "else if". Till den här grenen kommer man om villkoret i någon av de tidigare grenarna inte uppfylls.

2 2 2

Vi kollar på ett program som bestämmer vem som vunnit en match:

mal_hem = int(input("Hemmalagets mål: "))
mal_borta = int(input("Bortalagets mål: "))

if mal_hem > mal_borta:
    print("Hemmalaget vann!")
elif mal_borta > mal_hem:
    print("Bortalaget vann!")
else:
    print("Oavgjort!")

Programmet kan ge tre olika resultat baserat på de värden som ges:

Exempelutskrift

Hemmalagets mål: 4 Bortalagets mål: 2 Hemmalaget vann!

Exempelutskrift

Hemmalagets mål: 0 Bortalagets mål: 6 Bortalaget vann!

Exempelutskrift

Hemmalagets mål: 3 Bortalagets mål: 3 Oavgjort!

I exemplet ovan finns tre grenar varav exakt en körs. En if-sats kan dock innehålla fler än en elif-gren. Dessutom är en else-gren inte obligatorisk.

Det här är också en helt korrekt if-sats:

print("Julkalender")
datum = input("Vilken dag är det? ")

if datum == "24/12":
    print("Det är julafton")
elif datum == "25/12":
    print("Det är juldag")
elif datum == "26/12":
    print("Det är annandag jul")

print("Tack och hej.")
Exempelutskrift

Julkalender Vilken dag är det? 25/12 Det är juldag Tack och hej.

Det senaste exemplet saknar else-gren. Om användaren ger ett datum som inte uppfyller villkoret på någon av if- eller elif-grenarna, kommer ingen av grenarna att köras.

Exempelutskrift

Julkalender Vilken dag är det? 1/1 Tack och hej.

Loading...
:
Loading...

Log in to view the quiz

Du har nått slutet av den här delen! Fortsätt till nästa del:

Se dina poäng genom att klicka på cirkeln nere till höger av sidan.