Schleifen

Grundlegendes

In der Programmierung spielen Schleifen eine wesentliche Rolle als Grundprinzip von sich wiederholenden Aufgaben mit entsprechend veränderten Werten. Eine Wiederholung der Schleife wird dabei als Iterationsschritt bezeichnet, die gesamte Schleife oftmals auch als Iteration. In vielen Programmiersprachen bauen Schleifen eher auf arithmetisch veränderten Werten auf, z.B. wird eine Schleife über die Zahlenmenge von 1 bis x iteriert.

for Schleife

In Python wird dagegen in einer for-Schleife grundlegend über eine Sequenz (z.B. Liste oder Zeichenkette) iteriert. Wenn also beispielsweise eine Liste über alle Hochschulstandorte existiert:

In [2]:
hsliste = [
              ['Hochschule Augsburg','An der Hochschule',1,86161,'Augsburg'],
              ['Hochschulzentrum Donau-Ries','Emil-Eigner-Straße',1,86720,'Nördlingen'],
              ['Hochschule Kempten','Bahnhofstraße',61,87435,'Kempten'],
              ['Hochschulzentrum Memmingen','Am Galgenberg',1,88770,'Memmingen'],
          ]

dann kann über diese gesamte Liste mit einer for-Schleife und dem in-Operator iteriert werden und für jeden Listeneintrag entsprechende Berechnungen bzw. Aufgaben wieder in einem eingerückten Block erledigt werden:

In [3]:
for hs in hsliste:
    print(hs[0],"in",hs[-1])
Hochschule Augsburg in Augsburg
Hochschulzentrum Donau-Ries in Nördlingen
Hochschule Kempten in Kempten
Hochschulzentrum Memmingen in Memmingen

while Schleife

Es gibt in Python zudem noch das Konstrukt der while-Schleife, die solange ausgeführt wird, wie die Bedingung nach dem while-Ausdruck wahr ist:

In [4]:
i = 2
while i < 10:
    i += 2
    print(i)
4
6
8
10
In [5]:
%%Mooc StringAssessment
Out[5]:

Schleife

Verwenden sie die folgende Zuweisung für die Variable a mit der Liste der Zahlen bis 5:


    a = [1,2,3,4,5]

Berechne in einer Schleife die Summe der Quadratzahlen bis n=5



Range Funktion

Wenn über eine Zahlensequenz iteriert werden muss, dann gibt es in Python die Funktion range(n), die in Abhängigkeit des Arguments eine entsprechende arithmetische Zahlenabfolge der Länge n, konkret von 0 bis zur Zahl n-1 erzeugt:

In [6]:
for i in range(5):
    print(i)
0
1
2
3
4

Wenn die Funktion range mit zwei Argumenten besetzt wird, dann ist das erste Argument der Startwert und das zweite Argument der Stopwert:

In [7]:
for i in range(3,8):
    print(i)
3
4
5
6
7
In [8]:
%%Mooc StringAssessment
Out[8]:

Schleife mit der Range-Funktion

Die Fibonacci-Reihe beginnt mit den Zahlen 0,1,1 und jede weitere Fibonacci-Zahl wird durch die Addition der beiden Vorgänger erzeugt (s. auch "Weitere Literatur" unten)


Verwenden sie eine Liste, in der sie die Fibonacci-Zahlen abspeichern und beginnen mit der folgende Zuweisung

    a = [0,1,1]

Hängen sie in einer Schleife von n=3 bis n=10 an die obige Liste die nächsten Zahlen der Fibonacci-Reihe.

Berechne in dieser Schleife die Summe der Fibonacci-Reihe bis n=10



break und continue Ausdrücke und der else-Abschnitt in Schleifen

break

Der break Ausdruck beendet die aktuell innerste Schleife:

In [9]:
for i in range(6):
    if i == 4:
        break
    print(i)
0
1
2
3

continue

Der continue Ausdruck springt sofort zum nächsten Iterationsschritt:

In [10]:
for i in range(6):
    if i % 2 == 0:
        print("  gerade", i)
        continue
    print("ungerade", i)
  gerade 0
ungerade 1
  gerade 2
ungerade 3
  gerade 4
ungerade 5

else in Schleifen

Es gibt auch einen else Abschnitt in Schleifen, der dann durchgeführt wird, wenn die Schleife normal durchlaufen wird und nicht durch einen break Ausdruck beendet wird:

In [11]:
for i in range(6):
    print(i)
else:
    print("fertig")
0
1
2
3
4
5
fertig
In [12]:
for i in range(6):
    if i == 4:
        break
    print(i)
else:
    print("fertig")
0
1
2
3
In [13]:
%%Mooc StringAssessment
Out[13]:

Break

Verwenden sie eine erste, äußere Schleife von n=2 bis n=100, gehen sie anschliessend her und verwenden sie eine zweite, innere Schleife von t=2 bis t=n und fragen anschliessend in einer Bedingung ab, ob die Variable n durch die Variable t teilbar ist (indem sie n Modulo t überprüfen, ob ein Rest existiert oder nicht)

Berechnen sie die Summe der Primzahlen bis n=100



pass Ausdruck

Der pass Ausdruck tut nichts. Er kann dazu benutzt werden, wenn ein Ausdruck syntaktisch notwendig ist, aber der Ablauf keine Aktion erwartet. Z.B. um einen else-Block für eine zukünftige Verwendung vorzubereiten:n

In [14]:
n = 36
t = 2
if n%t == 0:
    print(n,"ist teilbar durch",t)
else:
    pass
36 ist teilbar durch 2
In [15]:
%%Mooc Video
Out[15]:

Weitere Literatur

In [16]:
%%Mooc WebReference

For Statement

https://docs.python.org/3/tutorial/controlflow.html#for-statements

Hinweis: Ein kurzes Beispiel aus dem Python Tutorial mit weiteren Verlinkungen zur Syntax-Beschreibung

In [17]:
%%Mooc WebReference

Fibonacci-Folge

https://de.wikipedia.org/wiki/Fibonacci-Folge

Hinweis: Weiterer Hintergrund zur Fibonacci-Folge