Lernziele
- Sie können
for
-Schleifen richtig verschachteln und für komplexere Figuren nutzen.- Sie wissen, wie man den Wert einer Variable auf Basis ihres aktuellen Werts verändern kann, dass sie z.B. um eins erhöht wird.
for
-Schleifen kann man verschachteln. Dabei wird die innere for
-Schleife (blau) bei jedem Durchgang der äusseren for
-Schleife (orange) komplett und wie gewohnt ausgeführt. Der Körper der inneren Schleife (hellblau) wird also insgesamt sechsmal ausgeführt. (Beachten Sie: Man sollte nicht zweimal die Variable i
zu gebrauchen.)
Formen Sie eine Hypothese, was die print()
-Befehle in diesem Programm ausgeben, und schauen Sie dann die Auflösung an. Nehmen Sie sich Zeit, die Auflösung im Detail nachzuvollziehen.
Quadratschiene
Wir wollen nun folgende Figur mit verschachtelten for
-Schleifen zeichnen.
Dazu habe ich Ihnen ein Erklärvideo erstellt, wie Sie solche Aufgaben angehen können.
Wenn Sie in der äusseren Schleife eine Farbliste nutzen, können Sie Ihre Quadrate einfärben.
Eigenständige Übungen
Quadratschiene extended
Machen Sie diese Figur von versetzten Quadraten nach mit einer Variabel quadrate
für die Anzahl Quadrate.
Lösung
quadrate = 3 for i in range(quadrate): for j in range(4): eva.forward(50) eva.right(90) eva.forward(70)
Quadrat aus Quadraten
Ein Quadrat aus Quadraten
Lösung
for i in range(4): for j in range(4): eva.forward(50) eva.right(90) eva.right(90)
Quadrattreppe
Machen Sie diese Leiter aus Quadraten nach mit einer Variabel quadrate
für die Anzahl Quadrate.
Lösung mit Videoerklärung 📺
quadrate = 3 for i in range(quadrate): for j in range(4): eva.forward(50) eva.right(90) eva.forward(50) eva.right(90) eva.forward(50) eva.left(90)
n
-Eck advanced
Sie können eine Variabel um 1 erhöhen, indem Sie sie mit sich selbst plus 1 überschreiben – also so:
Versuchen Sie mit diesem Wissen Folgendes: Schreiben Sie ein Programm, das hintereinander zuerst ein Dreieck, dann ein Viereck, dann ein Fünfeck und zuletzt ein Sechseck zeichnet.
Lösung mit Videoerklärung
ecken = 3 for i in range (4): for j in range(ecken): eva.forward(50) eva.right(360/ecken) ecken = ecken + 1
Das könnte man auch mit range() direkt lösen.
for ecken in range (3,7): for j in range(ecken): eva.forward(50) eva.right(360/ecken)
Quadratpyramide
Machen Sie eine Pyramide aus Quadraten, bei der jede Reihe weniger Quadrate hat als die darunterliegende.
Lösung mit Videoerklärung 📺
seite = 50 for anzahl_quadrate in range(5, 0, -1): # Reihen von 5 bis 1 for quadrat in range(anzahl_quadrate): # Quadrate in jeder Reihe for _ in range(4): # Zeichnet ein Quadrat eva.forward(seite) eva.left(90) # Weg zum nächsten Quadrat eva.forward(seite) # Weg zur nächsten Reihe eva.back(50 * anzahl_quadrate) eva.left(90) eva.forward(seite) eva.right(90) eva.forward(seite / 2) turtle.done()
Blume
Versuchen Sie, eine Blume mit fünf Blüten zu zeichnen. Überlegen Sie sich, oder diskutieren Sie, wie Sie die Blume in einfachere Schritte aufteilen könnten und beginnen Sie mit dem einfachsten Teil.
Lösung mit Videoerklärung 📺
import turtle eva = turtle.Turtle("turtle") eva.speed(0) eva.pensize(2) blaetter = 5 # Blütenblätter wiederholen for k in range(blaetter): # Zwei runde Linien pro Blütenblatt for j in range(2): # 60 kleine Schrittlein mit je einem Grad Drehung pro Linie for i in range(60): eva.forward(5) eva.right(1) eva.right(120) eva.right(360/blaetter) turtle.done()
Kreisraster
Erstellen Sie ein Raster aus Kreisen. Sie können dazu die Befehle eva.penup()
, eva.pendown()
, eva.goto(x,y)
und eva.circle(r)
verwenden.
Lösung
for i in range(5): # 5 Reihen for j in range(5): # 5 Spalten eva.penup() eva.goto(j * 60, -i * 60) # Verschiebt sich horizontal und vertikal eva.pendown() eva.circle(20) # Zeichnet einen Kreis mit Radius 20
Quadratspirale
Eine Spirale aus grösser werdenden Quadraten.
Lösung mit Videoerklärung 📺
for i in range(12): for j in range(4): # Quadrat zeichnen eva.forward(20 + i * 10) # Quadrate werden immer grösser eva.right(90) eva.right(30) # Spiraleffekt durch Rotation
Zusammenfassung
Zusammenfassung
Verschachteln von for-Schleifen
for
-Schleifen kann man verschachteln. Auch der Körper des inneren Codeblocks (hellblau) braucht wieder einen Einzug mehr als erste Linie des blauen Blocks mit dem Doppelpunkt.
Man muss aufpassen, nicht zweimal die Variable
i
zu gebrauchen. Typischerweise verwenden wiri
undj
.Eine Zahlen-Variabel kann man um eins erhöhen, indem man sie mit sich selbst + 1 überschreibt.
zahl = 3 print("Jetzt hat die Variabel den Wert: ", zahl) zahl = zahl + 1 print("Jetzt hat die Variabel den Wert: ", zahl)