Voraussetzung
Sie haben auf jupyter.gbsl.website das Kapitel 5
bis und mit Kapitel 5.1
gelesen und bearbeitet.
-
Zeichnen Sie ein Nikolaus-Haus. Um die Länge der Diagonalen zu bestimmen, müssen Sie die Wurzel aus
2
berechnen. Dies können Sie, indem Sie die Funktionsqrt
(abkürzung für Squareroot, übersetzt auf deutsch Quadratwurzel) aus der Bibliothekmath
importieren:from math import sqrt
forward(100 * sqrt(2)) -
Verschieben Sie den Code, welche das Haus zeichnet, in eine Funktion
haus()
und rufen Sie die Funktion auf, damit ein Haus gezeichnet wird. -
Erzeugen Sie nun ein ganzes Quartier mit min.
10
Häusern (Tipp. verwenden Sie eine Schleife). Die Häuser sollen zufällig positioniert werden.Die Funktion
randint(-10, 10)
gibt eine zufällige Zahl zwischen-10
und10
zurück.pos_x = randint(-10, 10)
pos_y = randint(-10, 10)
goto(pos_x, pos_y, draw=False)Die Positionen sollen zwischen
-150
und150
gesetzt werden. -
Ändern Sie die Funktion so, dass Sie die Grösse des Hauses beim Funktionsaufruf mitgeben können.
haus(10)
soll ein haus mit Seitenbreite10
zeichnen,haus(100)
eines mit Seitenbreite100
. -
Zeichnen Sie eine farbeige Stadt:
Dazu brauchen wird die Funktion
cycle()
, welche eine Liste auf einem Drehteller ablegt; nachdem die letzte Farbe verwendet wurde, wird wieder die erste Farbe zurückgegeben:from itertools import cycle
colors = [
'red',
'green',
'blue'
]
color_cycle = cycle(colors)
color = next(color_cycle) # => red
color = next(color_cycle) # => green
color = next(color_cycle) # => blue
color = next(color_cycle) # => redStatt nur drei Farben, können Sie auch bspw. die Regenbogenfarben verwenden:
# Regenbogenfarben:
rainbow_colors = [
'red',
'orangered',
'orange',
'yellow',
'lightgreen',
'lime',
'green',
'blue',
'indigo',
'violet'
]
Zeichnungen mit Funktionen erzeugen
-
6 Auf https://io.gbsl.website/controller gibt es
4
Funktionstasten. Wird eine solche geklickt, wird im Skript mit derselbenDeviceID
die Funktionon_f1
, bzw.on_f2
,on_f3
oderon_f4
aufgerufen.-
F1
zeichnet ein Haus -
F2
ein8
eck -
F3
einen5
er Stern -
F4
ändert die Position mitgoto()
zu einem zufälligen neuen Punkt.
-
-
7 Auf https://io.gbsl.website/controller können auch die Steuertasten verwendet werden. Sobald eine solche Taste geklickt wird, wird die Funktion
on_key(data)
aufgerufen. Indata.key
steht eine der folgenden Texte drin:-
up
-
right
-
down
-
left
-
home
Mit den Schlüsselwörtern
if
,elif
undelse
ist es möglich, Codeteile nur dann auszuführen, wenn ein Vergleich zutrifft oder nicht.key = "up"
if key == "down":
print("Runter")
elif key == "up":
print("Rauf!!")
elif key == "right":
print("Rechts!!")
elif key == "left":
print("Links!")
else:
print("Unbekannte Richtung!!!")
print("Fertig")Hier wird überprüft, ob
key
dem Textdown
entspricht (nein). Falls nicht, wird mitelif
eine weitere Bedingung überprüft: obkey
dem Textup
entspricht (ja). aller eingerückte Code nach Zeile5
ausgeführt - es wird alsoRauf!!
ausgegeben. Danach springt die Code-Ausführung direkt zu Zeile14
.Was würde ausgegeben wenn auf Zeile
1
:key = "home"
stehen würde? Alle Bedingungen würden nicht zutreffen, weshalb der "Sonst"-Fall (else
) eintrifft und die Zeile12
ausgeführt wird.Schreiben Sie ein Programm, welches bei
-
up
10
Schritt nach vorn -
right
45°
nach rechts -
down
10
Schritt rückwärts -
left
45°
nach links -
home
nach hause (home()
)
6: Bedingte Ausführunggeht.
-
Funktionen