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
2berechnen. Dies können Sie, indem Sie die Funktionsqrt(abkürzung für Squareroot, übersetzt auf deutsch Quadratwurzel) aus der Bibliothekmathimportieren: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.
10Hä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-10und10zurück.pos_x = randint(-10, 10)
pos_y = randint(-10, 10)
goto(pos_x, pos_y, draw=False)Die Positionen sollen zwischen
-150und150gesetzt werden.
Ändern Sie die Funktion so, dass Sie die Grösse des Hauses beim Funktionsaufruf mitgeben können.
haus(10)soll ein haus mit Seitenbreite10zeichnen,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
4Funktionstasten. Wird eine solche geklickt, wird im Skript mit derselbenDeviceIDdie Funktionon_f1, bzw.on_f2,on_f3oderon_f4aufgerufen.F1zeichnet ein HausF2ein8eckF3einen5er 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.keysteht eine der folgenden Texte drin:uprightdownlefthomeMit den Schlüsselwörtern
if,elifundelseist 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
up10Schritt nach vornright45°nach rechtsdown10Schritt rückwärtsleft45°nach linkshomenach hause (home())geht.
6: Bedingte Ausführung