Название: Routineaufgaben mit Python automatisieren
Автор: Al Sweigart
Издательство: Bookwire
Жанр: Математика
isbn: 9783960889571
isbn:
Die Ausführung dieses Programms können Sie sich auf https://autbor.com/vampire2/ ansehen. Nehmen wir nun an, die Variable age enthält vor der Ausführung dieses Codes den Wert 3000, dann könnte man glauben, dass das Programm deshalb den String 'Unlike you, Alice is not an undead, immortal vampire.' ausgibt. Allerdings hat schon die Bedingung age > 100 den Wert True (schließlich ist 3000 größer als 100) (
Abb. 2–6 zeigt das Flussdiagramm für den vorstehenden Code. Die Rauten für age > 100 und age > 2000 sind hier vertauscht.
Optional können Sie hinter der letzten elif-Anweisung noch eine else-Anweisung einfügen. In diesem Fall wird garantiert genau eine Klausel ausgeführt. Wenn die Bedingungen in sämtlichen if- und elif-Anweisungen False sind, wird die else-Klausel ausgeführt. Bauen wir unsere Alice-Beispiel noch ein wenig um, sodass es if-, elif- und else-Klauseln verwendet:
name = 'Carol'
age = 3000
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
else:
print('You are neither Alice nor a little kid.')
Speichern Sie diesen Code als littleKid.py. Das Flussdiagramm sehen Sie in Abb. 2–7, die Ausführung dieses Programms auf https://autbor.com/littlekid/.
In Alltagssprache formuliert, lautet diese Flusssteuerungsstruktur wie folgt: »Wenn die erste Bedingung wahr ist, tu dies. Ist dagegen die zweite Bedingung wahr, tu jenes. Anderenfalls mach etwas anderes.« Wenn Sie alle drei Anweisungen kombinieren, müssen Sie sich an die Regeln für die Reihenfolge halten, damit Sie keine Fehler wie den aus Abb. 2–6 einbauen. Erstens muss es immer genau eine if-Anweisung geben. Jegliche elif-Anweisungen, die Sie brauchen, folgen auf die if-Anweisung. Zweitens: Wenn Sie sicherstellen wollen, dass mindestens eine Klausel ausgeführt wird, müssen Sie die Struktur mit einer else-Anweisung abschließen.
Abb. 2–6Das Flussdiagramm für das Programm vampire2.py. Der durchgestrichene Pfad kann logisch nie erreicht werden, denn wenn der Wert von age größer als 2000 ist, so ist er bereits größer als 100.
Abb. 2–7 Das Flussdiagramm für das Programm littleKid.py
While-Schleifen
Mit einer while-Anweisung können Sie dafür sorgen, dass der Code in der while-Klausel immer wieder ausgeführt wird, solange die Bedingung der Anweisung True ist. Eine while-Anweisung enthält Folgendes:
Das Schlüsselwort while
Eine Bedingung (einen Ausdruck, der zu True oder False ausgewertet wird)
Einen Doppelpunkt
Einen eingerückten Codeblock (die while-Klausel), der in der nächsten Zeile beginnt
Eine while-Anweisung sieht ähnlich aus wie eine if-Anweisung, verhält sich aber ganz anders. Am Ende einer if-Klausel fährt das Programm mit der Ausführung hinter der if-Anweisung fort, wohingegen es am Ende einer while-Klausel zurück zum Beginn der while-Anweisung springt. Die while-Klausel wird oft auch als while-Schleife oder einfach als Schleife bezeichnet.
Zum Vergleich wollen wir uns eine if- und eine while-Anweisung ansehen, die die gleiche Bedingung verwenden und auf der Grundlage dieser Bedingung auch die gleichen Aktionen ausführen. Der Code der if-Anweisung sieht wie folgt aus:
spam = 0
if spam < 5:
print('Hello, world.')
spam = spam + 1
Die while-Anweisung stellt sich folgendermaßen dar:
spam = 0
while spam < 5:
print('Hello, world.')
spam = spam + 1
Die Anweisungen sehen ähnlich aus: Sowohl if als auch while prüfen den Wert von spam und geben eine Meldung aus, wenn dieser Wert kleiner als 5 ist. Aber wenn Sie diese beiden Codefragmente ausführen, geschieht jeweils etwas völlig anderes. Bei der if-Anweisung lautet die Ausgabe schlicht Hello, world., doch bei der while-Anweisung wird dieser Satz fünfmal ausgegeben. Um zu sehen, warum das so ist, schauen Sie sich die Flussdiagramme für diese beiden Codefragmente in Abb. 2–8 und 2–9 an.
Abb. 2–8Das Flussdiagramm für den Code mit der if-Anweisung
Abb. 2–9Das Flussdiagramm für den Code mit der while-Anweisung
Der Code in der if-Anweisung prüft die Bedingung und gibt die Meldung Hello, world. ein einziges Mal aus, wenn die Bedingung wahr ist. Der Code in der while-Schleife dagegen gibt die Meldung fünfmal aus. Danach hält er an, da der Integerwert in spam nach jedem Schleifendurchlauf um 1 erhöht wird. Die Schleife wird also fünfmal ausgeführt, bevor spam < 5 falsch ist.
In einer while-Schleife wird die Bedingung zu Beginn jeder Iteration (also vor jedem Durchlauf durch die Schleife) geprüft. Ist sie True, so wird die Klausel ausgeführt. Danach wird die Bedingung erneut geprüft. Wenn die Bedingung zum ersten Mal False ist, wird die while-Klausel übersprungen.
Das folgende kleine Beispielprogramm fordert Sie immer wieder auf, »your name« einzugeben, bis Sie tatsächlich wortwörtlich »your name« eingeben (und nicht etwa Ihren Namen). Öffnen Sie mit File > New ein neues Dateieditorfenster, geben Sie den folgenden Code ein СКАЧАТЬ