Level 02: Wiederholungen

Level 2: Wiederholungen #

Wiederholungen sind langweilig! #

Wiederholungen sind etwas, das uns schnell langweilt. (Vielleicht ist das ein Grund, programmieren zu lernen? Computer sind sehr gut darin, eine bestimmte Sache seeehr oft zu wiederholen…) Doch wie lässt sich einem Computer so etwas beibringen?

Von dem berühmten Mathematiker Carl Friedrich Gauß wird diese Geschichte erzählt: Als Gauß noch ein Junge war und zur Schule ging, bekam seine Klasse einmal die Aufgabe, alle Zahlen von 1 bis 100 zusammenzuzählen. Gauß’ Lehrer staunte nicht schlecht, als sein Schüler Carl Friedrich bereits nach kurzer Zeit das Ergebnis auf den Tisch legte. (Gauß hatte Paare gebildet: \(1 + 100, 2 + 99, 3 + 98, …\) Da bei jedem Paar immer der selbe Wert herauskommt, ist so aus dieser langwierigen Additionsaufgabe eine viel harmlosere Multiplikation geworden. Herausgekommen ist übrigens der Wert 5050. (Genaueres lässt sich in der Wikipedia nachlesen.)

Wie lässt sich nun der Computer überreden, solch langweilige, sich wiederholende Tätigkeiten zu übernehmen? Wir bräuchten so etwas wie:

>>> Für jedes i im Bereich bis 100:
        Gib i auf dem Bildschirm aus

Zählvariablen benennen

Hinweis zur Einordnung

i wird hier ähnlich wie in der Mathematik als so genannte Zählvariable hergenommen. Die Benennung ist so etwas wie eine Programmier-Tradition. In Fortran, einer Programmiersprache, die in den 1950er-Jahren entstand und als die erste Hoch-Programmiersprache angesehen wird, waren die ab i benannten Variablen (i, j, k, … bis q) standardmäßig Ganzzahl-Variablen. Obwohl Variablen in Python und vielen anderen Sprachen ganz frei benannt werden könnten, hat sich die Benennung mit i, j, usw. gehalten.

Oft ist es eine gute Idee, Variablen mit aussagekräftigen Namen zu verwenden. Für Programmierer:innen ist aber vielleicht i ebenso aussagekräftig, weil Zählvariablen schon immer so benannt wurden…

Wir lassen uns die Wiederholungs-Arbeit abnehmen! #

Zum Glück gibt es genau so etwas in Python! Öffne dazu eine REPL, und gib’ folgendes ein:

>>> for i in range(100):
        print(i)

Drücke auf Enter (zweimal – nach der print(i) Zeile muss noch der Block beendet werden) und sieh’ Dir das Ergebnis an. Hast Du damit gerechnet? Es werden hundert Zahlen ausgegeben!

Mit dem Schlüsselwort for können wir also einen Block beginnen, der wiederholt wird. range(100) liefert uns dabei eine Art Liste aller Zahlen von 0 bis 99 – wenn alle durchgegangen sind, endet die Wiederholung.

Es ließen sich auch mehr als eine Zeile in dem Block einschließen – in diesem Fall würden alle Anweisungen (Zeilen) des Blocks ausgeführt, und dann für die nächste Wiederholung wieder an den Anfang des Blocks zurückgesprungen.

Warum ohne 100?

Hinweis zur Einordnung

Die 100 selbst fehlt! Das liegt daran, dass in Python (wie in den meisten anderen Sprachen auch) standardmäßig bei 0 zu zählen begonnen wird. »Bis 100« heißt also: fange bei der 0 an, und höre vor der 100 auf.

Übung #

Jetzt sollte es nicht mehr schwer sein, ein Programm zu schreiben, mit dem wir in kürzester Zeit alle Zahlen bis 100 zusammenzählen können, oder? Lege eine Datei summy.py an, und kopiere den Code unten hinein. Ergänze den notwendigen Code und teste dein Programm!

summe = 0

# Hier muss Deine for-Wiederholung hin, die jede Zahl bis 100 zu summe hinzuzählt.



print('Die Summe ist', summe)
Tipp 1
Als Ergebnis muss 5050 herauskommen – ist das bei deinem Programm der Fall?
Tipp 2

Bei jeder Wiederholung muss der Variable summe der Wert der Zählvariable hinzugezählt werden. Wenn deine Zählvariable i heißt, müsste das also so aussehen:

summe += i

Diese Zeile muss in dem Block stehen, der wiederholt wird.

Tipp 3
Alle Zahlen von 0 bis 100 gibt uns die Funktion range(101). Für unsere Wiederholungsanweisung können wir also for i in range(101): schreiben. (Nach dem Doppelpunkt folgt unsere Zeile, die i zur Summe hinzuaddiert.)
Lösungsvorschlag
summe = 0

# Hier muss Deine for-Wiederholung hin, die jede Zahl bis 100 zu summe hinzuzählt.
for i in range(101):
    summe += i

print('Die Summe ist', summe)

Zurück Weiter