Routineaufgaben mit Python automatisieren. Al Sweigart
Break- und continue-Anweisungen lassen sich ausschließlich in while- und for-Schleifen einsetzen. Wenn Sie versuchen, sie an anderen Stellen zu verwenden, gibt Python eine Fehlermeldung aus.
Unser nächstes Beispiel für eine for-Schleife geht auf eine Geschichte über den Mathematiker Carl Friedrich Gauß zurück. Als er ein kleiner Junge war, wollte sein Lehrer die Klasse beschäftigt halten und wies die Schüler daher an, alle Zahlen von 1 bis 100 zu addieren. Der kleine Gauß kam aber auf einen Trick, mit dem er das Ergebnis in wenigen Sekunden berechnen konnte. In Python brauchen Sie diesen Trick gar nicht, sondern können die Arbeit einfach in einer for-Schleife erledigen lassen:
total = 0
for num in range(101):
total = total + num
print(total)
Das Ergebnis lautet 5050. Zu Anfang des Programms wird die Variable total auf 0 gesetzt (
(Der kleine Gauß hatte übrigens festgestellt, dass die Zahlen von 1 bis 100 aus 50 Paaren mit der Summe 101 bestanden: 1 + 100, 2 + 99, 3 + 98 usw. bis 50 + 51. Daher musste er nur noch 101 × 50 = 5050 rechnen. Schlaues Bürschchen!)
Eine gleichwertige while-Schleife
Es ist möglich, eine while-Schleife zu konstruieren, die genau das Gleiche macht wie eine for-Schleife. Die for-Schleife stellt nur eine knappere Schreibweise dar. Die folgende Variante von fiveTimes.py verwendet eine while-statt der for-Schleife:
print('My name is')
i = 0
while i < 5:
print('Jimmy Five Times (' + str(i) + ')')
i = i + 1
Die Ausführung dieses Programms können Sie sich auf https://autbor.com/fivetimeswhile/ ansehen. Wenn Sie es ausprobieren, erhalten Sie die gleiche Ausgabe wie bei dem Programm fiveTimes.py mit der for-Schleife.
Das Anfangs-, End- und Schrittargument für range()
Manche Funktionen können mit mehreren, durch Kommata getrennten Argumenten aufgerufen werden. Unter anderem ist das auch bei range() möglich. Damit können Sie dafür sorgen, dass die Funktion beliebige Intervalle durchläuft, auch solche, die nicht mit 0 beginnen:
for i in range(12, 16):
print(i)
Das erste Argument gibt den Wert an, mit dem die Variable der for-Schleife beginnt, das zweite die Zahl, bis zu der die Inkrementierung durchgeführt wird (ohne sie zu erreichen):
12
13
14
15
Die Funktion range() kann auch mit drei Argumenten aufgerufen werden. Dabei sind die ersten beiden wie gehabt der Anfangs- und der Endwert, während der dritte die Schrittweite angibt, also den Wert, um den die Variable nach jeder Iteration erhöht wird.
for i in range(0, 10, 2):
print(i)
Wenn Sie also range(0, 10, 2) aufrufen, wird in Abständen von 2 von 0 bis 8 gezählt:
0
2
4
6
8
Was die Reihenfolge der Zahlen für die for-Schleifen angeht, ist die Funktion range() sehr flexibel. Sie können auch eine negative Zahl als Schrittweite angeben, damit die for-Schleife abwärts zählt statt aufwärts.
for i in range(5, -1, -1):
print(i)
Diese for-Schleife hat die folgende Ausgabe:
5
4
3
2
1
0
Module importieren
Alle Python-Programme können einen grundlegenden Satz von eingebauten oder integrierten Funktionen nutzen, beispielsweise print(), input() und len(), die Sie schon kennengelernt haben. Darüber hinaus wird Python mit einem Satz von Modulen geliefert, der als Standardbibliothek bezeichnet wird. Jedes Modul ist ein Python-Programm mit mehreren thematisch verwandten Funktionen, die Sie in Ihr Programm einbetten können. Beispielsweise verfügt das Modul math über mathematische Funktionen, das Modul random über Funktionen für Zufallszahlen usw.
Bevor Sie die Funktionen eines Moduls nutzen können, müssen Sie das Modul mit der Anweisung import importieren. Diese Anweisung hat die folgenden Bestandteile:
Das Schlüsselwort import
Den Namen des Moduls
Optional weitere Modulnamen, die durch Kommata voneinander getrennt sind
Nachdem Sie ein Modul importiert haben, können Sie alle seine Funktionen nutzen. Das wollen wir anhand des Moduls random ausprobieren, das uns Zugriff auf die Funktion random.randint() gibt.
Geben Sie den folgenden Code in den Dateieditor ein und speichern Sie ihn als printRandom.py:
import random
for i in range(5):
print(random.randint(1, 10))
Überschreiben Sie keine Modulnamen!
Wenn Sie Ihre Python-Skripte speichern, müssen Sie darauf achten, dass Sie ihnen nicht die Namen von Python-Modulen wie random.py, sys.py, os.py oder math.py geben. Sollten Sie versehentlich eines Ihrer Programme etwa random.py nennen und dann in einem anderen Programm die Anweisung import random verwenden, so wird statt des Python-Moduls random Ihre Datei random.py importiert. Das kann zu einer Fehlermeldung wie AttributeError: module 'random' has no attribute 'randint' führen, da Ihre Datei nicht über die Funktionen verfügt, die sich in dem echten Modul random befinden. Verwenden Sie auch keine Namen von eingebauten Python-Funktionen wie print()oder input().
Solche Probleme sind zwar selten, doch wenn sie auftreten, lassen sie sich nur schwer finden. Mit zunehmender Programmiererfahrung werden Sie die Namen der Standardmodule und -funktionen von Python besser kennen und dadurch noch seltener in solche Schwierigkeiten kommen.
Wenn Sie dieses Programm ausführen, erhalten Sie eine Ausgabe wie die folgende:
4