Osa 2

Kombinera villkor

Logiska operatorer

Du kan kombinera flera villkorsuttryck med de logiska operatorerna and och or. Operatorn and innebär att alla ingående villkorsuttryck måste vara sanna samtidigt. Operatorn or kräver att minst ett av villkorsuttrycken är sant.

Till exempel villkoret tal >= 5 and tal <= 8 anger att tal måste samtidigt vara minst fem och högst åtta – alltså mellan fem och åtta.

tal = int(input("Ge ett tal: "))
if tal >= 5 and tal <= 8:
    print("Talet är mellan 5 och 8")

Villkoret tal < 5 or tal > 8 anger att talet måste vara mindre än fem eller större än åtta – alltså inte mellan fem till åtta.

tal = int(input("Ge ett tal: "))
if tal < 5 or tal > 8:
    print("Talet är inte mellan 5 och 8")

Den här sanningstabellen beskriver hur operatorerna fungerar i olika situationer:

aba and ba or b
FalseFalseFalseFalse
TrueFalseFalseTrue
FalseTrueFalseTrue
TrueTrueTrueTrue

Ibland kan det vara bra att veta om ett villkorsuttryck inte är sant. Operatorn not inverterar ett värde, dvs. byter det till det motsatta:

anot a
TrueFalse
FalseTrue

Det ovanstående exemplet som anger om talet inte är mellan 5-8 kan också skrivas så här:

nummer = int(input("Ge en siffra: "))
if not (nummer >= 5 and nummer <= 8):
    print("Siffran är inte mellan 5 och 8")

Logiska operatorer kallas framför allt inom programmering för Boolean-operatorer.

Att kombinera och kedja villkorsuttryck

Det här programmet ber användaren att mata in fyra tal. Sedan kollar programmet vilket tal som är störst med hjälp av några villkor:

n1 = int(input("Ge tal 1: "))
n2 = int(input("Ge tal 2: "))
n3 = int(input("Ge tal 3: "))
n4 = int(input("Ge tal 4: "))

if n1 > n2 and n1 > n3 and n1 > n4:
    storst = n1
elif n2 > n3 and n2 > n4:
    storst = n2
elif n3 > n4:
    storst = n3
else:
    storst = n4

print(f" {storst} är det största talet.")
Exempelutskrift

Ge tal 1: 2 Ge tal 2: 4 Ge tal 3: 1 Ge tal 4: 1 4 är det största talet.

I exemplet ovan är n1 > n2 and n1 > n3 and n1 > n4 sant endast då alla tre "delvillkor" är sanna.

Kapslade if-satser

if-satser kan nästlas innanför andra if-satser. Till exempel kollar följande program först om talet är noll innan det kollar om talet är jämnt eller inte.

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

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

Så här kan programmet fungera:

Exempelutskrift

Ge ett tal: 3 Talet är ojämnt

Ge ett tal: 18 Talet är jämnt

Ge ett tal: -4 Talet är negativt

När man nästlar if-satser är det viktigt att indenteringen blir rätt. Indenteringen bestämmer vilka grenar som hör ihop. Till exempel tolkas en if-gren och en else-gren med samma indenteringsnivå som grenar av en och samma if-sats.

Ofta kan man åstadkomma samma sak med logiska operatorer och nästlade if-satser. Det följande exemplet fungerar helt på samma sätt som exemplet ovan:

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

if tal > 0 and tal % 2 == 0:
    print("Talet är jämnt")
elif tal > 0 and tal % 2 != 0:
    print("Talet är ojämnt")
else:
    print("Talet är negativt")

Man kan inte på rak arm säga vilkendera lösning som är bättre. Situationen bestämmer ofta hur det lönar sig att bygga upp if-satsen på ett logiskt sätt. I det här exemplet tycker många att versionen med nästling är mer intuitiv.

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.