if-satsen#

Detta är en så kallad villkorssats som gör att man, beroende på värde av ett logiskt (dvs typ bool) uttryck, kan göra olika saker.

Exempel:

  1. Antag att vi vill skriva ut ordet ”Positivt” om variabeln x är större än noll. Vi kan då skriva

    if x > 0:
        print("Positivt")
    
    • Utskriften kommer endast ske om villkoret är sant dvs om x är större än 0.

    • Indragningen av utskriftssatsen kallas för indentering.

  2. Om man vill skriva ”Positivt” om x är större än 0 annars ”Icke positivt”

    if x > 0:
        print("Positivt")
    else:
        print("Icke positivt")
    

Allmänt utseende#

Satsen finns således i två varianter:

if villkor:
    en eller
    flera indenterade
    satser
if villkor:
    en eller flera
    indenterade satser
else:
    en eller flera
    indenterade satser

Varianternas funktion kan åskådliggöras med figurerna:

bild bild

Villkoret i if-satsen är ofta ett uttryck av logisk typ dvs bool. Se minilektion om logiska uttryck.

Villkoret kan dock vara av vilken typ som helst. Då tolkas 0, 0.0, None, ”” och tomma sekvenser (t.ex. [] och ()) som False medan allt annat tolkas som True.

Ofta vill man testa flera olika alternativ. Antag till exempel att vi vill ha texterna ”negativt”, ”noll” eller ”positivt” utskrivna beroende på värdet av x. Koden för detta kan skrivas så här:

if x < 0:
    print("negativt")
else:
    if x == 0:
        print("noll")
    else:
        print("positivt")

Det här är dock en så vanlig situation så att det kan skrivas så här:

   if x < 0:
        print('negativt')
    elif x == 0:
        print('noll')
    else:
        print('positivt')

Det blir tydligare att man har tre ”jämbördiga” alternativ.

Observera att denna kod är ekvivalent med koden högre upp - det är bara en skillnad i layout!

Denna layout går naturligtvis att bygga vidare med fler fall. Exempel:

print('Talet x är', end=' ')
if x <= -100:
    print('mycket negativt')
elif x < 0:
    print('negativt)
elif x == 0:
    print('noll')
elif x < 100:
    print('positivt')
else:
    print('mycket positivt')

Följande är ett annat sätt att producera samma utskrift:

print("Talet x är ", end=' ')

if x <= -100 or x >= 100:
    print("mycket ", end=' ')

if x < 0:
    print("negativt")
elif x == 0:
    print("noll")
else:
    print("positivt")

Övningar#

  1. Skriv de satser som skriver ut den största av tre variabler x, y och z.

  2. Skriv de satser som gör att de tre variablerna x, y och z skrivs ut i storleksordning.