Funktionen
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
5 Funktionen6 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 HausF2
ein8
eckF3
einen5
er SternF4
ä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 Text down
entspricht (nein). Falls nicht, wird mit elif
eine weitere Bedingung überprüft: ob key
dem Text up
entspricht (ja). aller eingerückte Code nach Zeile 5
ausgeführt - es wird also Rauf!!
ausgegeben. Danach springt die Code-Ausführung direkt zu Zeile 14
.
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 Zeile 12
ausgeführt wird.
Schreiben Sie ein Programm, welches bei
up
10
Schritt nach vornright
45°
nach rechtsdown
10
Schritt rückwärtsleft
45°
nach linkshome
nach hause (home()
)geht.
6: Bedingte Ausführung