Diese Aktivität ist die Weiterführung der Repetition Konstanten und dient dazu das Konstrukt der Funktionen zu repetieren und zu vertiefen.
Wir haben im Unterricht gesehen, dass uns Funktionen im Vergleich zu Konstanten eine grössere Flexiblität bieten. Im Unterricht haben wir thematisiert, dass wir Funktionen verwenden, wenn:
Zu Beginn des Funktionskopfs muss stets das Schlüsselwort def stehen, anschliessend der Funktionsname, gefolgt von öffnender und schliessender Klammer, welche die flexiblen Parameter beinhalten. Ein Doppelpunkt schliesst den Funktionskopf ab. Alles was anschliessend eingerückt unterhalb aufgeführt ist, heisst (Funktions-)Körper und wird als Teil der Funktion angesehen:
def funktionsname(flexible_Parameter): #die Parameter dienen als sogenannte Platzhalter
return eigener Code #hier kommt nur ein einziger Codeblock & es werden die flexiblen
#Parameter gemäss Verwendung ergänzt
def funktionsname2(andere_Parameter):
#optional Konstante(n), Schleifen und andere Codeblöcke, die eine komplexere Grafik zuerst zusammenbauen
return name_der_endgrafik
Hier sehen Sie ein konkretes Codebeispiel einer Funktion, bei welcher das return-statement gleich nach dem Funktionskopf steht.
Nachfolgend sehen Sie eine Funktion, in welcher zuerst zwei Konstanten innerhalb des Funktionskörpers definiert werden. In diesen wird die Grafik zuerst zusammengesetzt und dann am Ende mit dem return-Befehl der Funktion zurückgegeben.
Für die Erstellung der Konstanten staengelglace_komplett
haben Sie für den sichtbaren Geschmacksteil (in diesem Fall Erdbeere) eine Art flacher Bogen programmieren müssen.
Da wir diese Figur noch in weiteren Aufgaben verwenden werden, ist es sinnvoll, diese Figur als eigene Funktion in Ihrer persönlichen Toolbox abzuspeichern.
flacher_bogen = beside(
rotate(180, circular_sector(20, 90, ERDBEER_ROT)),
beside(
rectangle(60, 20, ERDBEER_ROT),
rotate(-90, circular_sector(20, 90, ERDBEER_ROT))
)
)
def flacher_bogen(breite: int, radius: float, farbe: Color) -> Graphic:
return beside(
rotate(180, circular_sector(radius, 90, farbe)),
beside(
rectangle(breite-2*radius, radius, farbe),
rotate(-90, circular_sector(radius, 90, farbe))
)
)
Sobald Sie Ihre Funktion im Playground geschrieben haben, erscheint ein Werkzeugsymbol, mit welchem Sie die Funktion zu Ihrer Toolbox hinzufügen können:
Anschliessend müssen Sie eine kurze Beschreibung sowie ein mögliches Anwendungsbeispiel definieren, bevor Sie die Funktion in Ihre Toolbox abspeichern können:
Die Funktion sollte nun auf der linken Seite als gespeicherte Funktion erscheinen:
Im Laufe dieser Aktivität wird auch die folgende Figur in lila wiederverwendet:
Diese Figur kennen Sie bereits aus dem Unterricht und einen Teil davon haben Sie soeben als Funktion programmiert und vielleicht sogar bei der Stängelglace verwendet.
from pytamaro import above, rotate, Graphic, rectangle, Color, green, show_graphic
from toolbox import flacher_bogen
def abgerundetes_rechteck(breite: int, hoehe: int, radius: float, farbe: Color) ->Graphic:
return above(
rotate(180, flacher_bogen(breite, radius, farbe)),
above(
rectangle(breite, hoehe-2*radius, farbe),
flacher_bogen(breite, radius, farbe)
)
)
Nun haben wir einige Funktionsbeispiele gesehen und bereits zwei Funktionen selbst geschrieben, welche uns in dieser Aufgabe als Vorarbeit dienen. Denn wir wollen eine Funktion für die folgenden Legoköpfchen erstellen.
Für den Legokopf können wir die zuvor gespeicherte Funktion abgerundetes_rechteck()
verwenden und für den Aufsatz auf dem Kopf die Funktion flacher_bogen()
. Den Hals bildet ein einfaches Rechteck.
from pytamaro import (overlay, beside, above, rotate, Graphic, circular_sector, rectangle,
rgb_color, black, transparent, show_graphic)
from toolbox import flacher_bogen, abgerundetes_rechteck
def augen_mund(groesse: float, gesichtsfarbe: Color) -> Graphic: #Dieses Codefragment erhalten die SuS von der Lehrperson
return overlay(
beside(
beside(
circular_sector(groesse/5,360, black),
rectangle(groesse*0.8,180,transparent)
),
circular_sector(groesse/5,360, black)
),
rotate(-110,compose(circular_sector(groesse*1.8, 40, gesichtsfarbe),
circular_sector(groesse*1.9,40, black)))
)
def lego_kopf(gesichtsfarbe: Color) -> Graphic: #Dies ist der eigentliche Code, den die SuS noch programmieren müssen
return above(
overlay(
augen_mund(100, gesichtsfarbe),
above(
rotate(180, flacher_bogen(200, 60, gesichtsfarbe)),
abgerundetes_rechteck(400, 320, 50, gesichtsfarbe)
)
),
rectangle(200, 40, gesichtsfarbe)
)
Nun haben wir viel Vorarbeit geleistet und können wieder zu unserer Stängelglace zurückkehren. Diese wollen wir in eine Funktion staengelglace_divers()
umschreiben, damit wir alle möglichen Geschmacksrichtungen erstellen können. Seien Sie sich bewusst, dass es verschiedene Lösungen gibt, um zu dieser letzten Funktion zu gelangen.
Falls Sie den erstellten Code von Ihrer staengelglace_komplett
nicht mehr besitzen, können Sie folgenden Code als Orientierung für Ihre Funktion nehmen:
SCHOKOLADEN_BRAUN = rgb_color(150,75,0)
STAENGEL_BRAUN = rgb_color(255, 192, 128)
ERDBEER_ROT = rgb_color(255, 128,128)
sichtbare_glace= beside(
rotate(180, circular_sector(20, 90, ERDBEER_ROT)),
beside(
rectangle(60, 20, ERDBEER_ROT),
rotate(-90, circular_sector(20, 90, ERDBEER_ROT))
)
)
schokoladen_ueberzug = above(
above(
circular_sector(60 , 180, SCHOKOLADEN_BRAUN),
rectangle(120, 180, SCHOKOLADEN_BRAUN)
),
sichtbare_glace
)
staengel = above(
rectangle(20, 60, STAENGEL_BRAUN),
rotate(180,circular_sector(10, 180, STAENGEL_BRAUN))
)
staengelglace_komplett = above(
schokoladen_ueberzug,
staengel
)
Halten Sie sicherlich die Farben flexibel und verwenden Sie, wo möglich Funktionen aus Ihrer Toolbox.
Sie haben in dieser Aktivität...
This activity has been created by Schnider and is licensed under CC BY-SA 4.0.
Repetition Funktionen
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version a71e35c (Mon, 25 Aug 2025 18:25:55 GMT)