Betingelser


If -setninger
def f(x):
    print("A", end="")
    if (x == 0):
        print("B", end="")
        print("C", end="")
    print("D")

f(0) # ABCD
f(1) # AD

Eksempel: funksjon for å beregne absolutt-verdi

# Eksemplene under regner ut absolutt-verdien av et tall. Dette er egentlig
# helt unødvendig, siden python har en funksjon for akkurat dette innebygget.
# Vi viser dem likevel for å illustrere at det kan gjøres på mange måter.

# Ved bruk av if -setning:

def abs1(n):
    if (n < 0):
        n = -n
    return n

# Ved bruk av if -setning på én linje

def abs2(n):
    if (n < 0): n = -n # bare gjør dette for svært korte uttrykk
    return n

# Ved bruk av if -setning og flere return -setninger

def abs3(n):
    if (n < 0):
        return -n
    return n

# uten bruk av if -setning

def abs4(n):
    return (n < 0)*(-n) + (n>=0)*(n) # IKKE gjør dette!

# Ved bruk av if-else uttrykk

def abs5(n):
    return n if n >= 0 else -n  # Min favoritt

# uten bruk av if -setning

def abs6(n):
    return n > 0 and n or -n # SKREKKELIG!

# alle virker:
print("abs1(5) =", abs1(5), "and abs1(-5) =", abs1(-5))
print("abs2(5) =", abs2(5), "and abs2(-5) =", abs2(-5))
print("abs3(5) =", abs3(5), "and abs3(-5) =", abs3(-5))
print("abs4(5) =", abs4(5), "and abs4(-5) =", abs4(-5))
print("abs5(5) =", abs5(5), "and abs5(-5) =", abs5(-5))
print("abs6(5) =", abs6(5), "and abs6(-5) =", abs6(-5))
If-else
def f(x):
    print("A", end="")
    if (x == 0):
        print("B", end="")
        print("C", end="")
    else:
        print("D", end="")
        if (x == 1):
            print("E", end="")
        else:
            print("F", end="")
    print("G")

f(0)
f(1)
f(2)

Tilbake til absolutt-verdier:

def abs7(n):
    if (n >= 0):
        return n
    else:
        return -n

# eventuelt:

def abs8(n):
    if (n >= 0):
        sign = +1
    else:
        sign = -1
    return sign * n

print("abs7(5) =", abs7(5), "and abs7(-5) =", abs7(-5))
print("abs8(5) =", abs8(5), "and abs8(-5) =", abs8(-5))
If-elif-else
def f(x):
    print("A", end="")
    if (x == 0):
        print("B", end="")
        print("C", end="")
    elif (x == 1):
        print("D", end="")
    else:
        print("E", end="")
        if (x == 2):
            print("F", end="")
        else:
            print("G", end="")
    print("H")

f(0)
f(1)
f(2)
f(3)

Et annet eksempel

def number_of_roots(a, b, c):
    """ Antall løsninger for ligning 0 = ax**2 + bx + c. """
    d = b**2 - 4*a*c
    if (d > 0):
        return 2
    elif (d == 0):
        return 1
    else:
        return 0

print("0 = 4*x**2 + 5*x + 1 har", number_of_roots(4,5,1), "løsning(er).")
print("0 = 4*x**2 + 4*x + 1 har", number_of_roots(4,4,1), "løsning(er).")
print("0 = 4*x**2 + 3*x + 1 har", number_of_roots(4,3,1), "løsning(er).")

Et tredje eksempel

def get_grade(score):
    if (score >= 90):
        grade = "A"
    elif (score >= 80):
        grade = "B"
    elif (score >= 70):
        grade = "C"
    elif (score >= 60):
        grade = "D"
    elif (score >= 40):
        grade = "E"
    else:
        grade = "F"
    return grade

print("103 -->", get_grade(103))
print(" 88 -->", get_grade(88))
print(" 70 -->", get_grade(70))
print(" 61 -->", get_grade(61))
print(" 22 -->", get_grade(22))
If-else -uttrykk

Se avsnittet om betinget verdi i Datatyper og operasjoner.

God stil

Merk at dette avsnittet omhandler stil og ikke korrekthet.

Negert betingelse:

# Dårlig
b = True
if not b:
    print("nei")
else:
    print("ja")
# Bra
b = True
if b:
    print("ja")
else:
    print("nei")

Tom if -setning:

# Dårlig
b = True
if b:
    pass
else:
    print("nei")
# Bra
b = True
if not b:
    print("nei")

Unødvendig sammenligning med True/False:

# Dårlig
x = 2
y = 3 
if (x < y) == True:
    print("ja")
# Bra
x = 2
y = 3 
if x < y:
    print("ja")

Bruk av if i stedet for and:

# Mindre foretrukket
b1 = True
b2 = True
if b1:
    if b2:
        print("begge")
# Bra
b1 = True
b2 = True
if b1 and b2:
    print("begge")

Bruk av ekstra if i stedet for else:

# Dårlig
b = True
if b:
    print("ja")
if not b:
    print("nei")
# Bra
b = True
if b:
    print("ja")
else:
    print("nei")

Bruk av ekstra if i stedet for elif:

# Dårlig
x = 10
if (x < 5):
    print('small')
if ((x >= 5) and (x < 10)):
    print('medium')
if ((x >= 10) and (x < 15)):
    print('large')
if (x >= 15):
    print('extra large')
# Bra
x = 10
if (x < 5):
    print('small')
elif (x < 10):
    print('medium')
elif (x < 15):
    print('large')
else:
    print('extra large')

Fancy bruk av python sin “aritmetikk”:

# Horribelt
x = 42
y = int(42 > 0 and 99)
# Bra
x = 42
y = 99 if x > 0 else 0

PS! Hvis du syntes det er morsomt med uleselig kode, kan du gjerne prøve deg på code golf etterhvert som du føler deg komfortabel med grunnleggende programmering.