Jython HomeDruckenJava-Online

for-Schleifen


Mit for-Schleifen steht in Python neben den while-Schleifen eine zweite Möglichkeit zur Verfügung, bestimmte Anweisungen zu wiederholen . Die einfachsten for-Schleifen, sind sogenannte Zählschleifen in der Form:

for i in range(n):
    Anweisung1
    Anweisung2
    ...
 

range(n) liefert die Zahlen 0, 1, 2, ...bis n -1, also insgesamt n Zahlen. i hat zu Beginn den Wert 0 und wird nach jedem Schleifendurchlauf um 1 erhöht. Die Anweisungen im Schleifenblock werden also n mal wiederholt. Diese Schleife entspricht einer while-Schleife mit Startwert 0, Schleifenbedingung i < n und Wertänderung 1.

Beispiel 1: Die Turtle zeichnet eine Sternfigur, die aus 9 Segmenten besteht. Die Anweisungen forward(160) und right(160) werden 9 mal wiederholt.

# Tu3.py

from gturtle import *

makeTurtle()
  
for i in range(9):
    forward(160)
    right(160)
 
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 
Ausführen mit Webstart

Die allgemeine Form einer for-Schleife:

for i in range(start, stop, step):
    Anweisung1
    Anweisung2
    ...
 

Der start-Wert muss zu Beginn nicht 0 sein, sondern eine beliebige ganze Zahl und auch die Wertänderung step kann beliebige ganzahlige Werte annehmen. Die Anweisungen im Schleifenblock werden wiederholt, so lange i kleiner als der stop-Wert ist.


Beispiel 2: Die Turtle zeichnet eine Spirale. Die erste Strecke hat die Länge 10 (start-Wert), jede weitere wird jeweils um 5 länger (step), so lange die Streckenlänge kleiner als 200 ist (stop-Wert).

# Tu3a.py

from gturtle import *

makeTurtle()

for i in range(10, 200, 5):
    forward(i)
    left(90)    
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 
Ausführen mit Webstart

Erklärungen zum Programmcode:

for-in-range kann 1, 2 oder 3 Parameter haben:

for i in range(n): for i in range(start, end): for i in range(start, end, step):
from gturtle import *

makeTurtle()

for i in range(150):
    forward(i)
    left(90)  
from gturtle import *

makeTurtle()

for i in range(50, 150):
    forward(i)
    left(90) 
from gturtle import *

makeTurtle()

for i in range(50, 150, 8):
    forward(i)
    left(90)  

Anstelle einer for-Schleife kann man immer auch die while-Schleife einsetzen. Diese benötigt zwar zwei Programmzeilen mehr, kann aber auch dann verwendet werden, wenn die Werte start, stop oder step Dezimalzahlen sind.

 

  Verschachtelte for-Schleifen

Die for-Schleifen lassen sich verschachteln. Eine korrekte Einrückung der Anweisungen in der inneren Schleife ist wichtig.

Beispiel 3: In der inneren Schleife wird jeweils ein Quadrat gezeichnet. Die äussere Schleife bewirkt, dass 10 solche Quadrate gezeichnet werden, wobei nach jedem Quadrat eine Drehung um 36 Grad erfolgt.

# Tu3b.py

from gturtle import *

makeTurtle()
  
for k in range(10):
    for i in range(4):
        forward(80)
        right(90)
    left(36)    
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 
Ausführen mit Webstart

 

  Figuren positionieren

Beispiel 4: Die Turtle wird im Turtlefenster positioniert und zeichnet an jeder Position einen Stern. Die Positionierung erfolgt mit einer for-Schleife mit dem Startwert -200, Endwert 200 und Wertänderung 70.

# Tu3c.py

from gturtle import *

makeTurtle()
  
hideTurtle()
for x in range(-200, 200, 70):
    setPos(x, 0)
    for i in range(5):
        forward(80)
        right(144)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 
Ausführen mit Webstart

 

Erklärungen zum Programmcode:

 

Das Turtle-Fenster ist 600x600 Pixel gross. Falls keine Positionierung vorgenommen wird, beginnt die Turtle in der Mitte des Fensters an der Position (0, 0) zu zeichnen.


Mit dem Befehl setPos(x, y) kann die Turtle an eine beliebige Position im Fenster versetzt werden, wobei die x- und y-Koordinaten die Werten zwischen -300 und 300 annehmen können.

 


hideTurtle(): Mit diesem Befeht wird die Turtle nicht mehr sichtbar. Da die Turtle-Animation wegfällt, erfolg das Zeichnen wesentlich schneller

 


Aufgaben: Serie 3

1)

a) Zeichne einen 5-er Stern, in dem due in einer for-Schleife die Befehle forward(200), right(144) fünf mal wiederholst.

b) Zeichne eine zweite Figur, indem du in einer for-Schleife die Befehle forward(200), right(143) mehrmals wiederholst.

 
2) Verwende for-Schleifen, um folgende Figuren zu zeichnen:

3)

4)

 

Die Turtle bewegt sich jeweils vorwärts, zeichnet einen Punkt und dann bewegt sie sich zurück zum Ausgangspunkt. Bevor sie die nächste Strecke zeichnet, dreht sie sich um einen kleinen Winkel nach rechts. Zeichne eine solche Figur mit einer for-Schleife mit Startwert 20, Endwert 300 und Wertänderung 5. Wenn du vor dem Beginn der for-Schleife den Befehl hideTurtle() wählst, erfolgt das Zeichnen schneller.


5) Zeichne mit dem Befehl dot(40) gefüllte Kreise an den Positionen (-250, 0), (-200, 0), (-150, 0)....(250, 0). >

 


Anmerkung

Die Funktion range() wird in Python nicht nur in den for-Schleifen verwendet. range() liefert eine Folge von Zahlen. Im einfachsten Fall hat range() nur einen einzigen Parameter (Stop-Wert) und liefert eine Folge von natürlichen Zahlen, die mit 0 beginnt und bei einem Wert kleiner als der Stop-Wert endet.

range() mit zwei Parametern range(Startwert, Stopwert) liefert eine Folge von Zahlen, die mit Startwert beginnt und mit Stopwert-1 endet.
range(3, 7) liefert z. B. die Zahlen 3, 4, 5, 6.

Bei range() mit drei Parametern ist der erste Parameter der Start-Wert, der zweite der Stop-Wert, der dritte die Wertveränderung vom einem Element zum nächsten.
range(2, 20) liefert die Zahlen 2, 5, 8, 11, 14, 17.