At My Fingertips
In dieser Aktivität erfährst du, wie du mithilfe von Typen klärst, was für Werte eine Funktion akzeptiert und erzeugt.
Schau dir die Dokumentation der rechteck Funktion an. Bewege dazu die Maus darüber und sieh dir das Popup an.
Drei! Wenn du die rechteck
Funktion aufrufen möchtest, musst du drei Argumente übergeben, ein Argument für jeden Parameter. Die Argumente stellen die Werte für die Parameter breite
, hoehe
und farbe
des Rechtecks bereit.
Wie du bereits in der Aktivität Fehlermeldungen verstehen gesehen hast, resultiert ein TypeError, wenn du dich nicht an diese Vorgaben hältst.
Alle Varianten in der nachfolgenden Codezelle sind nicht regelkonform. Kommentiere die vier falschen Varianten aus (d.h., deaktiviere sie mit einem #-Symbol am Zeilenbeginn) und schreibe darunter eine fünfte Variante, die tatsächlich ein rotes 100 x 50 Rechteck anzeigen lässt.
Dein Code sollte nun ohne Fehler ausgeführt werden. Der fünfte Funktionsaufruf stellt, wie verlangt, ein Argument für jeden Parameter der rechteck
Funktion bereit. Die Funktion erzeugt somit ein Rechteck und gibt es zurück, sodass es mittels zeige_grafik
ausgegeben werden kann.
Doch halt! Auch die vierte Variante stellt doch drei Argumente bereit. Wieso "merkt" Python, dass die Argumente bei dieser Variante nicht in der verlangten Reihenfolge übergeben worden sind?
Schau dir noch einmal die Dokumentation der rechteck Funktion an.
Das Wort breite
sagt uns, dass der Name des ersten Parameters der Funktion „breite“ ist. Aber worum geht es bei diesem Doppelpunkt (:) und dem Wort float
?
Dies ist eine Typ-Annotation (vom Lateinischen für "Anmerkung"). Sie gibt den Typ dieses Parameters an. Sie sagt uns, dass wir als erstes Argument in einem rechteck
Aufruf eine Gleitkommazahl (engl. floating-point number, kurz float
) übergeben müssen.
Jeder der drei Parameter der rechteck
Funktion erwartet Werte eines bestimmten Typs: Die breite
und hoehe
müssen als Werte vom Typ float
(Gleitkommazahlen wie 1.5, auch ganze Zahlen wie 50 sind in Ordnung) angegeben werden und die farbe
erwartet Werte vom Typ Farbe
.
Wenn wir eine Funktion aufrufen, sollten wir ihr immer Argumente der erwarteten Typen übergeben.
rechteck(rot, 100, 50)
ist nicht korrekt.
rechteck(100, 50, rot)
ist typkorrekt.
Datentypen werden verwendet, um die Art von Daten zu definieren, damit der Computer sie korrekt interpretieren kann. Neben float
wirst du v.a. den folgenden drei Datentypen immer wieder begegnen:
int
): Integers sind ganze Zahlen wie 1
, -12
oder 50
.str
): Ein String (oder auch Zeichenkette) repräsentiert Buchstaben, Zeichen oder Text und wird in Hochkommas eingeschlossen. Beispiele: "x"
oder "Ganze Wörter und Sätze sind auch möglich"
.bool
): Boolesche Werte gibt es nur zwei: True
(wahr) und False
(falsch). Sie werden verwendet, um einfache Ja/Nein- oder Wahr/Falsch-Aussagen darzustellen. Zum Beispiel, "Ist die Lampe an?" könnte mit "True" (an) oder "False" (aus) beantwortet werden.Diese Datentypen sind fundamental in der Programmierung und werden in verschiedenen Anwendungsfällen verwendet. Integers werden häufig für Zählungen, Strings für Textverarbeitung und Booleans für logische Entscheidungen genutzt.
Werfen wir einen letzten Blick auf die rechteck Funktion.
Dem Pfeil (->) folgt der Rückgabetyp der Funktion. Er sagt uns, welchen Wert wir erhalten, wenn wir die Funktion aufrufen. Gemäss dieser Rückgabetyp-Annotation erzeugt die rechteck
Funktion einen Wert vom Typ Grafik und gibt ihn zurück. Sie garantiert zwar nicht, dass die zurückgegebene Grafik rechteckig ist, wohl aber, dass es sich um eine Grafik und nicht um eine Zahl oder einen Wert eines anderen Typs handelt.
Anhand der Rückgabetyp-Annotation einer Funktion können wir erkennen, dass die Funktion immer einen Wert dieses Typs zurückgibt. Wir müssen die Funktion nicht aufrufen, um es herauszufinden. Wir können uns einfach die Dokumentation ansehen.
quadrat
FunktionWir wollen eine Funktion definieren, die Quadrate erzeugen kann.
Am Beispiel "Kreis" hast du bereits gelernt, wie man eine Funktion definiert. Deine kreis
Funktion hat ihre Arbeit erledigt, indem sie die (allgemeinere) ellipse
Funktion aufgerufen hat.
Ähnlich verhält es sich mit Quadraten und Rechtecken. Wir können eine quadrat
Funktion definieren, die intern die allgemeinere rechteck
Funktion aufruft.
Das könnte etwa so aussehen:
def quadrat(seite, farbe):
...
Nachdem wir uns nun mit Typ-Annotationen auskennen, schreiben wir nun eine informativere Funktionsdefinition.
Ersetze im folgenden Code die ... durch die Typen der beiden Parameter und den Typ des Rückgabewerts. Beachte, dass die Typen Farbe
und Grafik
Teil der PyTamaro-Bibliothek sind und wir sie in der ersten Zeile importieren.
Führe die Codezelle aus. Sieht es aus wie ein Quadrat?
Erstelle und zeige in der folgenden Codezelle ein grünes Quadrat mit der Seitenlänge 150 und zeige es an.
Importiere zunächst die Definition des Namens gruen
und ersetze dann ... durch den entsprechenden quadrat
Aufruf.
Erstelle nun ein schwarzes Quadrat mit der Seitenlänge 80 und zeige es an. Definiere dieses Mal keinen Namen, sondern rufe einfach die quadrat
Funktion direkt innerhalb von zeige_grafik
auf.
Du hast gelernt, dass es verschiedene Typen von Werten gibt; zum Beispiel Gleitkommazahlen (float
), Farben (Farbe
) und Grafiken (Grafik
).
Du hast ausserdem gelernt, dass du beim Definieren einer Funktion den Typ jedes Parameters und den Typ des Rückgabewerts angeben kannst. Das nennt sich Typ-Annotation. Dadurch können Entwicklerinnen und Entwickler, die deine Funktion aufrufen, schnell verstehen, welche Typen von Argumenten deine Funktion erwartet und von welchem Typ ihr Rückgabewert sein wird.
This activity has been created by Lichtsteiner and is licensed under CC BY-SA 4.0.
It is derived from this activity.
Wie Funktionen mit Werten arbeiten
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version c3a8286 (Mon, 14 Oct 2024 13:30:28 GMT)