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.

Anzahl der Argumente

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 PyTamaro iconFehlermeldungen 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.

Loading...

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?

Argument-Typen

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.

Kurzer Exkurs zu Datentypen

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:

  1. Integer (int): Integers sind ganze Zahlen wie 1, -12 oder 50.
  2. String (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".
  3. Boolean (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.

Typen von Rückgabewerten

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.

Eine quadrat Funktion

Wir 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.

Loading...

Führe die Codezelle aus. Sieht es aus wie ein Quadrat?

Verschiedene Quadrate

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.

Loading...

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.

Loading...

Was du gelernt hast

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

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c3a8286 (Mon, 14 Oct 2024 13:30:28 GMT)