Zählschleifen
Betrachte das folgende Programm. Zunächst wird eine Routine
namensschild(...)
festgelegt, dann noch eine Funktion zur
Berechnung der Breite.
Im Hauptprogramm wird zuerst die Breite des Namensschildes berechnet.
Dann wird die Routine Namensschild
5 mal aufgerufen, jedes mal mit einer anderen
y-Koordinate.
Das wollen wir nun eleganter hinbekommen und uns die 5 Aufrufe von
namensschild(...)
sparen. Hierfür lässt sich in Python die Konstruktion mit
for
verwenden. Hinter for
steht eine Variable
und danach eine Liste mit Werten, die die Variable nacheinander
annehmen soll.
Hinter dieser Zeile folgen dann eine oder mehrere Zeilen, die mehrfach ausgeführt werden sollen, für jeden Eintrag in der Liste einmal.
Damit man erkennt, welche Zeilen mehrfach ausgeführt werden sollen und wann es "normal" weitergeht, werden die mehrfach auszuführenden Zeilen wieder eingerückt. Diese Technik des Einrückens kennen wir schon von der Definition von Routinen.
In unserem Beispiel wird nur eine Zeile mehrfach ausgeführt, nämlich die Zeilenamensschild(y)
.
Bereiche statt Listen
Wenn eine Befehlsfolge sehr häufig (z.B. 100 mal) wiederholt wird, kann auch die Erstellung einer entsprechend langen Liste sehr lästig sein. Auch hierfür hat Python eine Lösung parat.
Der Befehl range(...)
erzeugt — zumindest können
wir uns das mal so vorstellen — eine Liste automatisch. Dabei
gibt der erste Wert den ersten Wert an, der von der Variablen
angenommen wird. Der zweite Wert ist der Wert, der bei der Erstellung
der Liste gerade nicht mehr angenommen werden soll. (Es ist etwas
gewöhnungsbedürftig, dass es eben nicht der letzte wirklich
angenommene Wert ist, aber das können wir leider nicht ändern.)
Aus diesem Grund steht in unsersem Programm 141 und eben nicht 140.
Gibt man bei range(...)
nur diese beiden Werte an, dann
geht Python davon aus, dass alle ganzzahligen Werte dazwischen
angenommen werden.
Bei unserem Beispiel wäre das allerdings wenig hilfreich, denn dann würden hunderte von Namensschildchen gezeichnet, jeweils nur um einen y-Schritt versetzt. Deshalb kann man als dritten Parameter noch angeben, um welchen Betrag die Variable bei jedem Durchlauf erhöht werden soll, in unserem Fall um 70.
Aufgabe 1: Einfach nur mal zählen
Aufgabe 2: Zählen mit Abständen
Aufgabe 3: Lieblingszahlen
Aufgabe 3: Liniertes "Papier"
Entwirf ein Pythonprogramm, das die Zeichenfläche wie die Seite eines typischen Deutsch-Hefts aussehen lässt, also mit Linien.
Tipp: Schreibe zunächst die Routine waagrecht(...)
, um die
Linien zu zeichnen. Im Hauptprogramm kannst du die
Zeichengeschwindigkeit mit speed(0)
stark erhöhen.