10    Schleifen – Wiederholungen machen Programme stark

Mit den sogenannten Schleifen lernst du nach den Bedingungen die andere wichtige Programmierstruktur kennen, die genauso bedeutsam ist. Programmschleifen können aus wenigen Zeilen Python-Befehlen ein mächtiges Werkzeug machen, das Befehlsblöcke wieder und wieder ausführt.

»Papa, kannst du für mich bitte einmal bis 100 zählen?«, hat meine kleine Tochter früher oft zu mir gesagt. Ganz schön mühsam – wenn ich es denn mal wirklich gemacht habe. Als sie mich später dann bat, bis 1.000 zu zählen, war ich aber wirklich raus. »Das schaffen wir nicht mehr, so viel Zeit haben wir nicht«, lautete meine Antwort. Vor allem hatte ich aber keine Lust dazu.

Was für einen Menschen sehr mühsam und langweilig ist, kann für ein Computerprogramm aber auch ganz einfach sein. Wenn man weiß, wie. Denn genau dazu sind Computer sehr gut zu gebrauchen: Mühsame und langwierige Vorgänge für uns zu übernehmen. Und das auch noch rasend schnell, wenn gewünscht.

Wir wollen ein Programm schreiben, das erst einmal bis 100 zählt, später bis 1.000. Jede Zahl soll einzeln ausgeschrieben werden.

Wenn wir das mit den Mitteln machen, die wir bisher kennen, wird das Schreiben des Programms aber noch aufwendiger, als laut bis 100 zu zählen:

print 1
print 2
print 3
print 4
print 5
print 6

usw. …

Wir müssten hundert dieser Zeilen schreiben. Das kann es ja wohl nicht sein. Hier passiert in jeder Zeile dasselbe. Eine Zahl wird ausgegeben. Nur dass die Zahl jedes Mal um eins höher ist.

Programmierer sind bequem und vor allem effizient. Sie würden einen Befehl nicht zwei, drei oder vier Mal nacheinander eintippen, wenn es im Prinzip immer dasselbe ist, was passiert.

Sobald ein Vorgang sich wiederholt, ist das ein Zeichen, dass eine sogenannte Schleife verwendet werden sollte – eine Wiederholungsstruktur.

Die Zählschleife mit »repeat«

Was müsste sich hundert Mal wiederholen, wenn das Programm von 1 bis 100 zählen soll? Es müsste ein Zähler verwendet werden, der mit 1 beginnt, dann ausgegeben wird, dann um 1 erhöht wird, und dann müsste es wieder von vorn losgehen, bis der Zähler bei 100 ist.

Also so:

Und jetzt in richtigem Python. Als Wiederholungsbefehl verwendest du eine Zählerschleife, hier die sogenannte repeat-Schleife (wie du siehst, werden auch bei Schleifen die zugehörigen Programmzeilen immer nach rechts eingerückt):

zaehler = 1
repeat 100:
print zaehler
zaehler = zaehler + 1

Gib das Programm ein, und sieh dir das Ergebnis an:

Python zählt untereinander von 1 bis 100! So wie gewünscht.

Wie funktioniert das?

Zuerst wird eine Variable zaehler definiert und auf 1 gesetzt, den Anfangswert. Danach kommt die Wiederholung. repeat 100: ist ein sehr einfacher Befehl, den TigerJython uns hierfür zur Verfügung stellt. repeat heißt auf Deutsch »Wiederhole«. Der Befehl bedeutet also: Wiederhole den folgenden eingerückten Block genau 100 Mal. (Statt der 100 könnte dort natürlich auch eine Variable oder ein mathematischer Ausdruck stehen. Es könnte auch gar nichts hinter dem repeat stehen – dann wird die Schleife endlos immer wieder ausgeführt).

In diesem Block wird also die Variable zaehler ausgegeben (beim ersten Mal ist das die 1), dann wird die Variable zaehler um 1 erhöht. Das machst du mit

zaehler = zaehler + 1

Die Variable zaehler wird neu belegt mit dem Wert zaehler + 1 – damit wird zaehler also um 1 erhöht.

[+]  Erhöhen in einem Schritt

Um die Variable zaehler um 1 zu erhöhen, gibt es auch eine Abkürzung, die du öfter mal in Profiprogrammen finden wirst. Man kann nämlich auch schreiben:

zaehler += 1 – auch damit erhöht man die Variable zaehler um 1.

Aber das braucht uns hier erst mal nicht weiter zu verwirren.

zaehler = zaehler + 1 ist an dieser Stelle klarer, funktioniert wunderbar und bewirkt genau dasselbe.

Und danach geht es wieder von vorne los mit dem eingerückten Block, denn aufgrund des repeat-Befehls wird der Block immer genau 100 Mal nacheinander ausgeführt. Am Schluss wird dann also 100 ausgegeben – und damit endet das Programm, weil die repeat-Schleife 100 Mal durchlaufen wurde.

Schon bei 100 angekommen!

Abbildung 10.1    Schon bei 100 angekommen!

[+]  Übrigens: »repeat«

Den Befehl repeat gibt es eigentlich nicht in Standard-Python. Er ist eine Besonderheit von TigerJython. Da er aber sehr einfach und praktisch ist und wir hier schließlich mit TigerJython arbeiten, werden wir ihn auch gerne verwenden. Später lernst du, wie man es auch anders machen kann (»for-Schleife mit range«), sodass die Zählschleife genauso in jeder anderen Python-Variante funktioniert.

Toll! So schnell bis 100 gezählt. Um jetzt bis 1.000 zu zählen, brauchst du nur eine winzige Änderung, die du dir sicher selbst denken kannst. Eine 0 mehr, und schon zählt das Programm bis 1.000. Probiere es aus.

[+]  Werte nebeneinander ausgeben

Wenn du möchtest, dass die Werte nebeneinander und nicht untereinander ausgegeben werden, musst du hinter den print-Ausgabebefehl einfach ein Komma setzen:

print zaehler,

Das Komma sorgt dafür, dass die nächste Ausgabe mit einem Leerzeichen Abstand hinter der vorherigen ausgegeben wird und nicht in einer neuen Zeile darunter.

Wenn du 100.000 (hunderttausend) eingibst, dann braucht das Programm schon gefühlt richtig lange. Das bedeutet aber nicht, dass Python langsam zählt. Bis hunderttausend zählen kann Python nämlich immer noch in Sekundenbruchteilen. Nur das Ausgeben der Zahl im Fenster braucht seine Zeit. Wenn hunderttausend Mal nacheinander der gesamte Text eine Zeile hochgeschoben werden soll, eine neue Zeile hinzugefügt wird, der Scrollbalken aktualisiert wird usw., kann das insgesamt schon ein paar Sekunden dauern. Schnell ist es immer noch.