Control–statements

"Eigentliches Programmieren" braucht Kontrollstrukturen:
Bedingungen testen und ggf. ausführen,
Zähl–Schleifen, Endlosschleifen, etc.

if: Standard-Konstruktion für einfache Verzweigungen
if ( expr ):
     statements

if–else: Verzweigung und Alternative
if ( expr ):
     statements_1
else:
     statements_2

Typ bool relativ neu in Python. In älteren Versionen einfach int verwendet:

Wichtig: Für if bzw. elif kann expr vom Typ bool oder int sein.

Häufiger Fehler in C/C++: if ( a = b ) ... statt if ( a == b ) ...
In Python nicht möglich, Syntax–Fehler !

if–elif–elif–...–else: Verzweigung und mehrere Alternativen
if ( expr1 ):
     statements_1
elif ( expr2 ):
     statements_2
elif ( expr3 ):
     statements_3
...
else:
     statements_n


if ( a < b ): a = b # einfaches if, auch in 1 Zeile
...

if ( a < b ): # if -- else
    a = b     
else:
    b = a
...

if ( a < b ): # if -- else if -- else
    a = b     
elif ( a > b ):
    b = a
elif ( a == b ):
    ...
else: # wenn alles andre fehlschlaegt ..
    print ("What else could I test ?")


if-else in einer Zeile

Sehr praktisch ist Kurzform wenn es nur 2 Alternativen gibt:

maxv = b if a < b else a


if Abfrage in Listen

Schönes Feature in Python ist dass auch für Listen einfache if–Abfrage möglich ist:

primes = [ 2, 3, 5, 7, 11, 13, 17, 19 ]
testnum = 9
if ( testnum in primes ):
print (testnum + " ist prime")
...

So nicht möglich in C++, JAVA, ...


Schleifen

while–loops:
while ( expr ):
statements
Zeilen statements werden ausgeführt solange Ausdruck expr wahr ist ( True)


# klassische Zaehlschleife
i=0
while ( i<10):
    print (i)
    i += 1
#...
# Summiere Quadratzahlen 1**2..10**2
sum=0; i=0 
while ( i<10): 
    i += 1
    sum += i*i
#...
# Einlesen
n=0
while ( True ):  # Endlosschleife
    s=f.readline()
    if ( len(s) == 0 ): break
    n += 1
#
print ("Lines read ", n)


while Schleifen universell verwendbar, insbesondere bei nicht absehbarer Abbruchbedingung, Ende als Reaktion auf z.B. bestimmtes Ereignis, End-of-file.


for–loops:
sind Alternative, insbesondere für Zählschleifen oder wenn über Elemente einer Python Sequenz iteriert werden soll.


S = [1,4,5,9,56]
for i in S:
    print (i)
#
s = "Donaudampfschiffahrtsgesellschaft"
ca = 0
for c in s: # iteriere ueber String
    if (c=='a'):
    ca += 1   # count 'a'
#
print (ca, " 'a' in ", s)

## Note: bad python programming style, better use string function
## to achive the same:
# s.count('a')

a=[[0]*3]*4 # 4x3 Matrix
for i in range(4): # Verschachtelte Schleifen
    for j in range(3):
        a[i][j] = i*j  # Fuellen von Matrix
#


break/continue :
Innerhalb des statements Blocks von for bzw. while Schleifen kann man mit

while ( True ):
    ...
    if ( ... ): continue # Springt ans Ende der Schleife
    if ( ... ): break;   # Springt aus der Schleife raus
    ...


for/while und else


#
s = "Donaudampfschiffahrtsgesellschaft"

for c in s: # iteriere ueber String
    if (c=='x'):
        print ('x found in ', s)
        break
else:
    print ('x not found in ', s)