Die folgenden Methoden sind schon vorgegeben:
def turnAround(): kara.turnLeft() kara.turnLeft() def gehe(schritte): for i in range(schritte): kara.move() def lege(schritte): for i in range(schritte): kara.putLeaf() kara.move()
def dreieck(hoehe): zeile = 1 while zeile <= hoehe: lege(zeile) turnAround() gehe(zeile) kara.turnLeft() kara.move() kara.turnLeft() zeile = zeile + 1 # Aufruf: dreieck(7)
1. Durchgang: zeile = 1 --> lege(zeile) -->...--> gehe(zeile) -->...--> zeile = zeile + 1
2. Durchgang: zeile = 2 --> lege(zeile) -->...--> gehe(zeile) -->...--> zeile = zeile + 1
3. Durchgang: zeile = 3 --> lege(zeile) -->...--> gehe(zeile) -->...--> zeile = zeile + 1
...
Letzter Durchgang: zeile = hoehe --> lege(zeile) -->...--> gehe(zeile) -->...--> zeile = zeile + 1
Schleife wird beendet.
und wenn, wie im Beispiel, hoehe = 7 ist:
1. Durchgang: zeile = 1 --> lege(1) -->...--> gehe(1) -->...--> zeile = 1 + 1 = 2
2. Durchgang: zeile = 2 --> lege(2) -->...--> gehe(2) -->...--> zeile = 2 + 1 = 3
3. Durchgang: zeile = 3 --> lege(3) -->...--> gehe(3) -->...--> zeile = 3 + 1 = 4
...
7. Durchgang: zeile = 7 --> lege(7) -->...--> gehe(7) --> ...--> zeile = 7 + 1 = 8
Schleife wird beendet.
def quadrat(laenge): zeile = 1 while zeile <= laenge: lege(laenge) turnAround() gehe(laenge) kara.turnLeft() kara.move() kara.turnLeft() zeile = zeile + 1 # Aufruf: quadrat(7)
1. Durchgang: zeile = 1 --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
2. Durchgang: zeile = 2 --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
3. Durchgang: zeile = 3 --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
...
Letzter Durchgang: zeile = laenge --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
Schleife wird beendet.
und wenn, wie im Beispiel, laenge = 7 ist:
1. Durchgang: zeile = 1 --> lege(7) -->...--> gehe(7) -->...--> zeile = 1 + 1 = 2
2. Durchgang: zeile = 2 --> lege(7) -->...--> gehe(7) -->...--> zeile = 2 + 1 = 3
3. Durchgang: zeile = 3 --> lege(7) -->...--> gehe(7) -->...--> zeile = 3 + 1 = 4
...
7. Durchgang: zeile = 7 --> lege(7) -->...--> gehe(7) --> ...--> zeile = 7 + 1 = 8
Schleife wird beendet.
def rechteck(laenge, breite): zeile = 1 while zeile <= breite: lege(laenge) turnAround() gehe(laenge) kara.turnLeft() kara.move() kara.turnLeft() zeile = zeile + 1 # Aufruf: rechteck(6, 5)
1. Durchgang: zeile = 1 --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
2. Durchgang: zeile = 2 --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
3. Durchgang: zeile = 3 --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
...
Letzter Durchgang: zeile = breite --> lege(laenge) -->...--> gehe(laenge) -->...--> zeile = zeile + 1
Schleife wird beendet.
und wenn, wie im Beispiel, laenge = 7 und breite = 5 ist:
1. Durchgang: zeile = 1 --> lege(7) -->...--> gehe(7) -->...--> zeile = 1 + 1 = 2
2. Durchgang: zeile = 2 --> lege(7) -->...--> gehe(7) -->...--> zeile = 2 + 1 = 3
3. Durchgang: zeile = 3 --> lege(7) -->...--> gehe(7) -->...--> zeile = 3 + 1 = 4
...
5. Durchgang: zeile = 5 --> lege(7) -->...--> gehe(7) --> ...--> zeile = 5 + 1 = 6
Schleife wird beendet.
def rechteckRahmen(laenge, breite): lege(laenge-1) kara.turnRight() lege(breite-1) kara.turnRight() lege(laenge-1) kara.turnRight() lege(breite-1) kara.turnRight() # Aufruf: rechteckRahmen(7, 5)
Kara muss waagerecht laenge-1 Blätter und senkrecht breite-1 Blätter legen. Er steht ja nach dem Legen hinter dem letzten gelegten Blatt und startet auf dieser Position mit weiterem Legen nach der Drehung.