Ich habe bereits die Listen und Bedingte Anweisungen vorgestellt, nun möchte ich die Schleifen vorstellen. Mit Schleifen und Bedinge Anweisungen können Listen durchlaufen oder sogar ganz bequem aufgebaut werden.
Es gibt in Python zwei Schleifen, einmal die For-Schleife und einmal die While-Schleife. Beide Schleifen sind Kopfgesteuert, d.h. die Bedingung wird vor der Abarbeitung geprüft.
In anderen Programmier bzw. Scriptsprachen gibt es zusätzlich Fußgesteuerte Schleifen jedoch bei Python nicht (“was jetzt nicht schlimm ist”).
Gegeben sei folgende Liste mit Namen:
namen = ["Stefan", "Lutz", "Horst", "Jochen"]
Nun möchten wir diese untereinander ausgeben. Sicherlich könnten wir mit dem Index auf jedes Element zugreifen und uns einen kurzen vier Zeiler schreiben.
print(namen[0]) print(namen[1]) print(namen[2]) print(namen[3])
Jedoch ist dieses für ein unbestimmbare Menge an Elementen nicht mehr möglich. Somit benötigen wir ein Konstrukt, welches uns erlaubt alle Elemente nacheinander auszugeben ohne das wir vorher wissen müssen wie viele Elemente in der Liste sind.
for – Schleife
Die for Schleife kann hierfür einfach genutzt werden:
namen = ["Stefan", "Lutz", "Horst", "Jochen"] for name in namen: print(name)
Es wird nach dem Befehl “for” eine neue Variable definiert, hier wähle den Bezeichner “name” da in der Liste Namen enthalten sind. (Bezeichner sollten immer selbsterklärend sein.) gefolgt von dem Schlüsselwort “in” und der Liste “namen”.
Die Ausgabe ist:
Stefan Lutz Horst Jochen
Die Zeile liest sich wie folgt “Für jeden namen in der Liste namen tue folgendes:”. In der dritten Zeile erfolgt die Ausgabe des Namens mit dem bereits bekannten Befehl “print”. Es hier auf die Einrückung zu achten!
while – Schleife
Für die while Schleife benötigt man ein definierbares Ende einer Liste. Mit dem Befehl “len(<<LISTE>>)” können wir die Anzahl der Elemente einer Liste herausfinden, somit ergibt sich:
anzahlElemente = len(namen) counter = 0 while counter < anzahlElemente: print(namen[counter]) counter = counter +1
Wie erhalten wiederum die gleiche Ausgabe:
Stefan Lutz Horst Jochen
Der Ausdruck in der while Schleife muss immer ein Boolean ergeben (True / False). Solange der Ausdruck True / Wahr ist, wird diese Schleife ausgeführt. Sollte man also einmal vergessen die Variable zu inkrementieren, so erzeugt man sich eine Endlosschleife, welche nur durch ein Stoppen des Skriptes abgebrochen werden kann.()
Funktion range
Mit der Funktion “range” kann man eine Liste aus ganzzahligen Werten erzeugen. Diese Liste hat einen Startwert und einen Endwert.
list = range(<<start>>, <<ende>>)
Wenn man nun eine Liste von Zahlen zwischen 1 und 10 haben möchte, so schreibt man dieses wiefolgt:
list = range(1, 10)
Wir haben nun eine Liste mit den Zahlen von 1 bis 9 erzeugt. (Achtung nicht 10!)
Auf diese Liste können wir wie aus dem Tutorial Python #3: Listen bekannt mit einem Index zugreifen.
list = range(1, 10) print(list[0]) print(list[3])
Die Ausgabe ist:
1 4
Nun können wir mit einer For Schleife die Zahlen der Liste ausgeben.
list = range(1, 10) for zahl in list: print(zahl)
Die Ausgabe ist:
1 2 3 4 5 6 7 8 9
Als Erstes wird wohl auffallen, dass der Endwert von 10 nicht ausgegeben wird.
Parameter
Der Funktion range kann man mehr als nur einen Startwert & Endwert übergeben, es gibt zusätzlich noch einen Parameter für Schritte zwischen den Zahlen.
Hier nun ein Beispiel:
list = range(1, 100,5)
Wir erzeugen nun eine Liste mit den Werten von 1 bis 100 in Schritten von 5 Zahlen.
[1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76,81,86,91,96]
Beispiel
Ausgabe von Großbuchstaben
Am Anfang dieses Kapitels haben wir die for Schleife kennengelernt und als Letztes habe ich die Funktion range vorgestellt. Wenn man sich nun die ASCII-Tabelle anschaut, dann sind die Buchstaben von 65 bis 91 abgebildet. Somit kann man mit range(65, 91) eine Liste von Zahlen 65 bis 90 aufbauen, zusätzlich benötigen wir noch eine Funktion, um die Zahl in ein ASCII Character umzuwandeln.
list = range(65, 91) for zahl in list: print(chr(zahl))
Die Ausgabe ist nun eine Liste der großgeschrieben Buchstaben von A bis Z:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Schlüsselwort – continue
Mit dem Schlüsselwort continue kann man innerhalb eines Schleifendurchlaufes mit einer Bedingten Anweisung ein Sprung erzeugen.
for i in range(0,5): if i == 3: continue print(i)
Die Ausgabe ist:
0 1 2 4
Man sieht hier das die Schleife von 0 bis 5 durchlaufen wird, jedoch die Ausgabe für die Zahl drei erfolgt nicht.
Das Schlüsselwort continue funktioniert natürlich auch in einer while Schleife.
Im nachfolgenden Quellcode haben wir mit der while Schleife die Ausgabe aller ungeraden Zahle von 0 bis 19 ausgegeben.
i = 0 while i < 20: i = i + 1 if i % 2 == 0: continue print(i)
Die Ausgabe ist:
1 3 5 7 9 11 13 15 17 19
Schlüsselwort – break
Mit dem Schlüsselwort break können wir einen Schleifendurchlauf abbrechen. D.h. anders als bei continue wird die Schleife nicht fortgeführt.
for i in range(0,5): if i == 3: break print(i)
Die Ausgabe:
0 1 2
Die Schleife wird bei der Zahl 3 abgebrochen.