Repetitionsübung 1
Die Aufgaben in der folgenden Datei sollen euch bei der Repetition und der Selbst-Einschätzung helfen. Bearbeite die Aufgaben in Ruhe und schaue die Musterlösungen erst an, wenn du die Aufgabe selbst gelöst hast.
Aufgabe 1: Farbe und Grösse abfragen
Schreibe ein Programm, das den Benutzer fragt, wie gross ein Quadrat sein soll und welche Farbe es haben soll. Zeichne das Quadrat danach mit der Turtle in der gewünschten Farbe und Grösse.
- Lies die Grösse mit
input()ein und wandle sie in eine Zahl um. - Lies die Farbe mit
input()ein. - Zeichne das Quadrat mit einer
for-Schleife (4 Seiten, je 90° drehen). - Gib nach dem Zeichnen in der Konsole aus, was gezeichnet wurde – z.B.:
Quadrat mit Seitenlänge 120 in rot
Hinweis 1: Eingaben einlesen und umwandeln
input() gibt immer einen Text zurück. Für eine Zahl musst du den Text mit int() umwandeln:
groesse = int(input("Wie gross soll das Quadrat sein? "))
farbe = input("Welche Farbe? ")Hinweis 2: Turtle vorbereiten und Quadrat zeichnen
import turtle
t = turtle.Turtle()
t.color(farbe)
for i in range(4):
t.forward(groesse)
t.right(90)Aufgabe 2: Wachsende Quadrate
Zeichne 5 Quadrate mit einer for-Schleife. Jedes Quadrat soll grösser sein als das vorherige und leicht gedreht, damit alle sichtbar sind.
- Starte mit einer Seitenlänge von
40. - Erhöhe die Seitenlänge nach jedem Quadrat um
40. - Drehe die Turtle nach jedem Quadrat um
15°. - Gib für jedes Quadrat per f-String aus:
Quadrat 1: Seitenlänge 40,Quadrat 2: Seitenlänge 80, usw.
Hinweis 1: Variable ausserhalb der Schleife anlegen
Lege die Seitenlänge vor der Schleife an und verändere sie am Ende jedes Durchlaufs:
seite = 40
for i in range(5):
# Quadrat zeichnen ...
t.right(15)
seite = seite + 40Hinweis 2: Quadratnummer im f-String
Die Schleifenvariable i beginnt bei 0. Um die Nummer als 1, 2, 3 ... auszugeben, rechne i + 1:
print(f"Quadrat {i + 1}: Seitenlänge {seite}")Aufgabe 3: Farbwechsel mit if/else
Zeichne 6 Quadrate in einer Schleife. Die Farbe soll nach folgendem Muster wechseln:
- Quadrate 1, 3, 5 (ungerade Nummer) →
"orange" - Quadrate 2, 4, 6 (gerade Nummer) →
"purple"
Alle Quadrate haben die gleiche Seitenlänge von 80. Drehe die Turtle nach jedem Quadrat um 25°. Gib für jedes Quadrat per f-String aus, welche Farbe verwendet wurde.
Hinweis 1: Gerade/ungerade mit Modulo
Der %-Operator gibt den Rest einer Division zurück. Damit kannst du prüfen, ob eine Zahl gerade oder ungerade ist:
if i % 2 == 0:
# i ist gerade (0, 2, 4, ...)
else:
# i ist ungerade (1, 3, 5, ...)Achtung: i beginnt bei 0. Quadrat Nummer 1 hat also i = 0.
Hinweis 2: Farbe in eine Variable speichern
Speichere die gewählte Farbe in einer Variable, damit du sie sowohl für t.color() als auch für print() verwenden kannst:
if i % 2 == 0:
farbe = "orange"
else:
farbe = "purple"
t.color(farbe)
print(f"Farbe: {farbe}")Aufgabe 4: Sternenmuster
Zeichne ein Sternenmuster: Die Turtle soll 36 Mal einen Strich zeichnen und sich danach um 170° drehen. Frage den Benutzer vorher nach:
- Der Länge jedes Strichs (als Zahl)
- Der Farbe des Sterns
Gib nach dem Zeichnen aus: Stern mit 36 Zacken, Länge <laenge>, Farbe <farbe>
Hinweis 1: Schleife für den Stern
for i in range(36):
t.forward(laenge)
t.right(170)Der Winkel 170° erzeugt ein schönes Sternmuster. Probiere auch andere Winkel aus!
Hinweis 2: Eingaben und Ausgabe
laenge = int(input("Wie lang soll jeder Strich sein? "))
farbe = input("Welche Farbe? ")
t.color(farbe)
# ... Schleife ...
print(f"Stern mit 36 Zacken, Länge {laenge}, Farbe {farbe}")Aufgabe 5: Dreieck oder Quadrat?
Frage den Benutzer, ob er ein Dreieck oder ein Quadrat zeichnen möchte. Frage ausserdem nach der Seitenlänge und der Farbe. Zeichne dann die gewünschte Form.
- Ein Dreieck hat 3 Seiten und dreht sich nach jeder Seite um
120°. - Ein Quadrat hat 4 Seiten und dreht sich nach jeder Seite um
90°. - Falls der Benutzer weder
"dreieck"noch"quadrat"eingibt, gib aus:Unbekannte Form!und zeichne nichts.
Hinweis 1: if/elif/else für die Formwahl
form = input("Dreieck oder Quadrat? ").lower()
if form == "dreieck":
# Dreieck zeichnen
elif form == "quadrat":
# Quadrat zeichnen
else:
print("Unbekannte Form!").lower() wandelt die Eingabe in Kleinbuchstaben um, damit z.B. "Dreieck" und "dreieck" beide funktionieren.
Hinweis 2: Anzahl Seiten und Winkel
Speichere Anzahl Seiten und Drehwinkel in Variablen, dann kannst du eine einzige Schleife für beide Formen verwenden:
if form == "dreieck":
seiten = 3
winkel = 120
elif form == "quadrat":
seiten = 4
winkel = 90
for i in range(seiten):
t.forward(laenge)
t.right(winkel)Aufgabe 6: Treppenform
Zeichne eine Treppe mit 5 Stufen. Jede Stufe besteht aus einem waagrechten und einem senkrechten Strich. Die erste Stufe ist 20 Schritte breit und hoch, die zweite 40, die dritte 60 usw. – jede Stufe ist also 20 Schritte breiter und höher als die vorherige.
Gib für jede Stufe aus: Stufe 1: Breite 20, Stufe 2: Breite 40, usw.
Frage den Benutzer vorher nach der Farbe der Treppe.
Hinweis 1: Eine Stufe zeichnen
Eine Stufe besteht aus einem Strich nach rechts (0°) und einem Strich nach oben. Da die Turtle zu Beginn nach rechts schaut, dreht sie sich für den senkrechten Teil um 90° nach links:
t.forward(breite) # waagrecht
t.left(90)
t.forward(breite) # senkrecht
t.right(90) # wieder in AusgangsrichtungHinweis 2: Breite pro Stufe erhöhen
Starte mit breite = 20 und erhöhe sie nach jeder Stufe um 20:
breite = 20
for i in range(5):
# Stufe zeichnen ...
print(f"Stufe {i + 1}: Breite {breite}")
breite = breite + 20Code lesen
Aufgabe L1: Was gibt das Programm aus?
Lies den folgenden Code ohne ihn auszuführen. Schreibe auf, was in der Konsole ausgegeben wird – Zeile für Zeile.
farbe = "rot"
seite = 20
for i in range(4):
seite = seite + 10
print(f"Durchlauf {i}: Seite = {seite}, Farbe = {farbe}")
farbe = "blau"
print(f"Fertig! Farbe ist jetzt {farbe}, Seite ist {seite}")Trage die Werte in diese Tabelle ein:
Durchlauf (i) | seite vor Zeile 5 | seite nach Zeile 5 | Ausgabe |
|---|---|---|---|
| 0 | 20 | ? | ? |
| 1 | ? | ? | ? |
| 2 | ? | ? | ? |
| 3 | ? | ? | ? |
Was steht nach der Schleife in der letzten Zeile?
Hinweis: Wie tracke ich Variablen?
Geh den Code Schritt für Schritt durch. Schreibe dir den aktuellen Wert jeder Variable auf, bevor du zur nächsten Zeile weitergehst. Die Variable seite ändert sich in jedem Durchlauf – der neue Wert hängt vom alten ab.
Aufgabe L2: Was zeichnet die Turtle?
Lies den folgenden Code und beschreibe in Worten, was die Turtle zeichnet. Versuche dir das Ergebnis vorzustellen, bevor du den Code ausführst.
from turtle import *
groesse = 80
for i in range(6):
if i % 2 == 0:
color("red")
else:
color("blue")
forward(groesse)
right(60)Beantworte folgende Fragen:
- Wie oft läuft die Schleife?
- Welche Farbe hat der erste Strich (wenn
i = 0)? - Welche Farbe hat der zweite Strich (wenn
i = 1)? - Um wie viel Grad dreht die Turtle insgesamt? Was für eine Form entsteht?
Hinweis: Drehwinkel und Form
Wenn die Turtle sich insgesamt um 360° dreht, endet sie wieder in der Ausgangsrichtung. Überlege: 6 Drehungen à 60° – wie viel ist das zusammen?
Aufgabe L3: Variablen verfolgen
Lies den folgenden Code und fülle die Tabelle aus, ohne das Programm zu starten.
x = 10
y = 3
ergebnis = 0
for i in range(4):
ergebnis = ergebnis + x
x = x - y
print(f"i={i}: x={x}, ergebnis={ergebnis}")i | ergebnis (vor Zeile 5) | ergebnis (nach Zeile 5) | x (nach Zeile 6) | Ausgabe |
|---|---|---|---|---|
| 0 | 0 | ? | ? | ? |
| 1 | ? | ? | ? | ? |
| 2 | ? | ? | ? | ? |
| 3 | ? | ? | ? | ? |
Hinweis: Reihenfolge beachten
Zeile 5 kommt vor Zeile 6. Das bedeutet: ergebnis wird mit dem alten Wert von x berechnet, bevor x verändert wird. Führe die Zeilen in der richtigen Reihenfolge durch.
Fehler finden
Aufgabe F1: Drei Fehler im Quadrat-Programm
Der folgende Code soll ein farbiges Quadrat zeichnen. Er enthält 3 Fehler. Finde und korrigiere alle drei.
from turtle import *
groesse = int(input("Grösse? "))
farbe = input("Farbe? ")
color(farbe)
for i in range(4)
forward(groesse)
right(90)
print(f"Fertig! Seitenlänge war {groesse}, Farbe war {couleur}")Hinweis: Wo suchen?
Schau dir diese drei Bereiche genau an:
- Den Schleifenkopf (
for ...) - Die Einrückung im Schleifenrumpf
- Die Variable im
print-Statement am Ende
Aufgabe F2: Drei Fehler im Treppenprogramm
Der folgende Code soll eine wachsende Treppe mit 5 Stufen zeichnen. Er enthält 3 Fehler. Finde und korrigiere alle drei.
from turtle import *
color("green")
breite = 0
for i in range(4):
print(f"Stufe {i + 1}: Breite {breite}")
forward(breite)
left(90)
forward(hoehe)
right(90)
breite = breite + 20Hinweis: Was passiert beim ersten Durchlauf?
Führe den Code im Kopf aus. Was ist der Wert von breite im ersten Durchlauf (i = 0)? Ergibt das für eine Treppe Sinn?
Schau dir danach an, ob alle Variablennamen korrekt geschrieben sind und ob die Schleife die richtige Anzahl Durchläufe macht.
Musterlösungen
Erst selbst versuchen!
Schaue dir die Musterlösungen erst an, nachdem du die Aufgabe selbst gelöst hast.
Musterlösung Aufgabe 1
Lösung anzeigen
from turtle import *
# Benutzer nach Grösse und Farbe fragen
groesse = int(input("Wie gross soll das Quadrat sein? "))
farbe = input("Welche Farbe? ")
# Farbe setzen
color(farbe)
# Quadrat zeichnen: 4 Seiten, nach jeder Seite 90° drehen
for i in range(4):
forward(groesse)
right(90)
# Ergebnis in der Konsole ausgeben
print(f"Quadrat mit Seitenlänge {groesse} in {farbe}")Musterlösung Aufgabe 2
Lösung anzeigen
from turtle import *
# Seitenlänge startet bei 40
seite = 40
for i in range(5):
# Quadratnummer ausgeben (i beginnt bei 0, daher i+1)
print(f"Quadrat {i + 1}: Seitenlänge {seite}")
# Quadrat zeichnen
for j in range(4):
forward(seite)
right(90)
# Turtle drehen, damit das nächste Quadrat sichtbar ist
right(15)
# Seitenlänge für das nächste Quadrat erhöhen
seite = seite + 40Musterlösung Aufgabe 3
Lösung anzeigen
from turtle import *
for i in range(6):
# Farbe je nach geradem oder ungeradem Index wählen
# i = 0, 2, 4 → orange (Quadrat 1, 3, 5)
# i = 1, 3, 5 → purple (Quadrat 2, 4, 6)
if i % 2 == 0:
farbe = "orange"
else:
farbe = "purple"
color(farbe)
print(f"Quadrat {i + 1}: Farbe {farbe}")
# Quadrat zeichnen
for j in range(4):
forward(80)
right(90)
# Turtle drehen für das nächste Quadrat
right(25)Musterlösung Aufgabe 4
Lösung anzeigen
from turtle import *
# Benutzer nach Länge und Farbe fragen
laenge = int(input("Wie lang soll jeder Strich sein? "))
farbe = input("Welche Farbe? ")
color(farbe)
# 36 Striche zeichnen, je 170° drehen → ergibt ein Sternmuster
for i in range(36):
forward(laenge)
right(170)
print(f"Stern mit 36 Zacken, Länge {laenge}, Farbe {farbe}")Musterlösung Aufgabe 5
Lösung anzeigen
from turtle import *
# Eingaben abfragen
form = input("Dreieck oder Quadrat? ").lower()
laenge = int(input("Seitenlänge? "))
farbe = input("Farbe? ")
color(farbe)
# Anzahl Seiten und Drehwinkel je nach Form festlegen
if form == "dreieck":
seiten = 3
winkel = 120
elif form == "quadrat":
seiten = 4
winkel = 90
else:
# Unbekannte Eingabe: Programm beenden
print("Unbekannte Form!")
seiten = 0
winkel = 0
# Form zeichnen (bei unbekannter Form ist seiten=0, Schleife läuft nicht)
for i in range(seiten):
forward(laenge)
right(winkel)Musterlösung Aufgabe 6
Lösung anzeigen
from turtle import *
# Farbe abfragen
farbe = input("Welche Farbe soll die Treppe haben? ")
color(farbe)
# Stufenbreite startet bei 20
breite = 20
for i in range(5):
print(f"Stufe {i + 1}: Breite {breite}")
# Waagrechter Strich (nach rechts)
forward(breite)
# Senkrechter Strich (nach oben)
left(90)
forward(breite)
right(90)
# Breite für die nächste Stufe erhöhen
breite = breite + 20Musterlösung L1
Lösung anzeigen
Ausgabe der Schleife:
i | seite vor Zeile 5 | seite nach Zeile 5 | Ausgabe |
|---|---|---|---|
| 0 | 20 | 30 | Durchlauf 0: Seite = 30, Farbe = rot |
| 1 | 30 | 40 | Durchlauf 1: Seite = 40, Farbe = rot |
| 2 | 40 | 50 | Durchlauf 2: Seite = 50, Farbe = rot |
| 3 | 50 | 60 | Durchlauf 3: Seite = 60, Farbe = rot |
Letzte Zeile: Fertig! Farbe ist jetzt blau, Seite ist 60
seite wird in jeder Iteration um 10 erhöht. Nach 4 Durchläufen ist sie also 20 + 4×10 = 60. farbe ändert sich erst nach der Schleife zu "blau".
Musterlösung L2
Lösung anzeigen
- Die Schleife läuft 6 Mal (
range(6)→ i = 0, 1, 2, 3, 4, 5). i = 0ist gerade (0 % 2 == 0) → Farbe rot.i = 1ist ungerade → Farbe blau.- 6 × 60° = 360° – die Turtle dreht sich einmal komplett im Kreis. Es entsteht ein regelmässiges Sechseck, dessen abwechselnde Seiten rot und blau sind.
Musterlösung L3
Lösung anzeigen
i | ergebnis vor Zeile 5 | ergebnis nach Zeile 5 | x nach Zeile 6 | Ausgabe |
|---|---|---|---|---|
| 0 | 0 | 10 | 7 | i=0: x=7, ergebnis=10 |
| 1 | 10 | 17 | 4 | i=1: x=4, ergebnis=17 |
| 2 | 17 | 21 | 1 | i=2: x=1, ergebnis=21 |
| 3 | 21 | 22 | -2 | i=3: x=-2, ergebnis=22 |
Wichtig: ergebnis = ergebnis + x verwendet den alten Wert von x. Erst danach wird x = x - y berechnet.
Musterlösung F1
Lösung anzeigen
Der fehlerhafte Code:
from turtle import *
groesse = int(input("Grösse? "))
farbe = input("Farbe? ")
color(farbe)
for i in range(4) # Fehler 1: Doppelpunkt fehlt
forward(groesse)
right(90) # Fehler 2: zu weit eingerückt (gehört auf gleiche Ebene wie forward)
print(f"Fertig! Seitenlänge war {groesse}, Farbe war {couleur}") # Fehler 3: Variable heisst farbe, nicht couleurDer korrigierte Code:
from turtle import *
groesse = int(input("Grösse? "))
farbe = input("Farbe? ")
color(farbe)
for i in range(4):
forward(groesse)
right(90)
print(f"Fertig! Seitenlänge war {groesse}, Farbe war {farbe}")Fehler im Überblick:
for i in range(4)→ fehlender Doppelpunkt am Enderight(90)war zu weit eingerückt – muss auf der gleichen Ebene wieforward()stehencouleurexistiert nicht – die Variable heisstfarbe
Musterlösung F2
Lösung anzeigen
Der fehlerhafte Code:
from turtle import *
color("green")
breite = 0 # Fehler 1: startet bei 0, erste Stufe hat Breite 0 → nichts sichtbar
for i in range(4): # Fehler 2: range(4) zeichnet nur 4 Stufen statt 5
print(f"Stufe {i + 1}: Breite {breite}")
forward(breite)
left(90)
forward(hoehe) # Fehler 3: Variable "hoehe" existiert nicht, gemeint ist "breite"
right(90)
breite = breite + 20Der korrigierte Code:
from turtle import *
color("green")
breite = 20
for i in range(5):
print(f"Stufe {i + 1}: Breite {breite}")
forward(breite)
left(90)
forward(breite)
right(90)
breite = breite + 20Fehler im Überblick:
breite = 0→ die erste Stufe hat Breite 0, die Turtle bewegt sich gar nicht. Startwert muss20sein.range(4)→ zeichnet nur 4 Stufen statt 5. Mussrange(5)sein.forward(hoehe)→ die Variablehoehewurde nie definiert. Der senkrechte Strich soll gleich lang wie der waagrechte sein, alsoforward(breite).