2.9. If, elif og else

Her er et eksempel på hvorledes man kan teste for forskellige betingelser, og få ens funktioner til at gøre nogle forskellige ting.


>>> def findMax(a,b,c):
...    max = a
...    if b > a:
...            max = b
...    if c > b:
...           max = c
...    return max
...
>>> findMax(37, 2 * 19 ,43)
43



>>> tal = 17 ** 4
>>> if tal < 50000:
...       print "Tallet er mindre end 50000"
... else:
...       print "Tallet er",tal
...
Tallet er 83521


If sætningen er måske den bedst kendte sætning (statement)


>>> x = int(raw_input("Skriv et helt tal: "))
>>> if x < 0:
...     x = 0
...     print 'Negativt tal ændret til nul'
... elif x == 0:
...     print 'Nul'
... elif x == 1:
...     print 'Et'
... else:
...     print 'Større end 1'
...


Der kan være nul eller flere elif blokke, else kan vælges/udelades efter ønske. Nøgleordet "elif" er en forkortelse af "else if" og er praktisk, da der derved er muligt at undgå alt for mange blokindrykninger (de fylder enormt i bredden).


>>> streng = "wqexmjupiolåærdtce45rft6g8ijuplbkilmæø3we45rft6g8ijupl"
>>> if len(streng) > 50:
...    print "Længden af strengen er større end 50"
... elif len(streng) > 45:
...    print "Længden af strengen er større end 45"
... elif len(streng) > 40:
...    print "Længden af strengen er større end 40"
... else:
...    print "Længden af strengen er:", len(streng)
...
Længden af strengen er større end 50


Simulering af terningekast: ALLE variabler i Python SKAL være erklærede, inden de bruges første gang, I det følgende eksempel skal der bruges 6 fordefinerede variabler. Her har Python en speciel og særdeles konstruktiv måde at gøre det på:


f6 = f5 = f4 = f3 = f2 = f1 = 0
I andre om ikke alle andre computersprog skulle det gøres nogenlunde således:
f1 = 0
f2 = 0
f3 = 0
f4 = 0
f5 = 0
f6 = 0
Simulering af terningekast:
>>> import random
>>> f6 = f5 =f4 = f3 = f2 = f1 = 0
>>> for kast in range( 1, 10001 ):       # 10.000 terningekast
...     udfald = random.randrange( 1, 7 )
...     if udfald == 1:
...             f1 += 1
...     elif udfald == 2:
...             f2 += 1
...     elif udfald == 3:
...             f3 += 1
...     elif udfald == 4:
...             f4 += 1
...     elif udfald == 5:
...             f5 += 1
...     else:
...             f6 += 1
print "Udfald:"
print "Antal enere:  ", f1
print "Antal toere:  ", f2
print "Antal treere:  ", f3
print "Antal firere:  ", f4
print "Antal femmere: " ,f5
print "Antal seksere: ", f6
import random
def kastMed2():
   terning1 = random.randrange( 1, 7 )
   terning2 = random.randrange( 1, 7 )
   sumTotal = terning1 + terning2
   print "Spiller slog%d + %d = %d" % ( terning1, terning2, sumTotal )
   return sumTotal
sum = kastMed2()       # første omgang kast
if sum == 7 or sum == 11:
   gameStatus = "VANDT"
elif sum == 2 or sum == 3 or sum == 12:
   gameStatus = "TABTE"
else:                                     # husker points
   gameStatus = "FORTSÆT"
   minePoints = sum
   print "Spillers points er ", minePoints
while gameStatus == "FORTSÆT":   # fortsæt spillet
   sum = kastMed2()
   if sum == minePoints:             # vandt med følgende resultat
      gameStatus = "VANDT"
   elif sum == 7:                  # vandt ved at slå/kaste summen 7
      gameStatus = "TABTE"
if gameStatus == "VANDT":
   print "Spilleren vandt"
else:
   print "Spilleren tabte"