At My Fingertips

Documentation

Funktionen: Rückgabewert und Seiteneffekte

Aufwärmen

Loading...

Sie haben also zwei Fehler korrigiert: den print-Befehl hinzugefügt, und die Berechnung geändert.

Loading...
Loading...

Denken Sie auch daran, am Schluss des Funktionskopfs den Ausgabetyp mit def name(...) -> float: zu fixieren. So wird manchmal auch gemeldet, dass die Ausgabe fehlerhaft ist, anstatt dass einfach nichts passiert.

Theorie

Rückgabewert und Ausgabe

Damit eine Funktion eine Ausgabe habt, muss laut obiger Beispiele auch Folgendes zutreffen:

  • Die Funktion(-definition) endet mit einem Rückgabewert: return m - dies fehlt in der Funktion multipliziere.
  • Der Funktionsaufruf ist selbst ein Parameter in einem Ausgabebefehl wie print oder show_graphic:
show_graphic(viertelkreis(50, blue))

print(addiere(1,2,3))

Seiteneffekte

Man kann aber auch Funktionen mit Seiteneffekten einbauen:

Loading...

Solche Funktionen mit Seiteneffekten müssen dann nicht mehr in einem print- oder show_graphic-Befehl als Parameter aufgerufen werden.

Diese sind aber unrein, weil sie für die weitere Verwendung oft nicht mehr geeignet sind. Vielleicht haben Sie schon etwas ähnliches erlebt, als Sie Ihren Code für die Toolbox nicht sauber gereinigt haben und dann immer zu viele Formen (Herze, Halbkreise, ...) beim Wiederverwenden erschienen.

-> Ausgabetyp

In den obigen Aufgaben haben Sie auch gesehen, dass die Fixierung von Parameter- und Datentypen nützlich sein kann. So können z. B. hilfreiche Fehlermeldungen zum falschen Datentyp ausgegeben werden.

def multipliziere(a: float, b: float, c: float) -> float:
    return a * b * c

Denken Sie daran, dass Funktionen ohne Ausgabewerte (ohne return) keinen Ausgabetyp mit -> angeben dürfen.

Aufgaben

1

Schreiben Sie eine Funktion, die als Seiteneffekt die Quadratzahl ausgibt.

Loading...

Lösungsvorschlag:

def quadratzahl(z: float):
    print(z * z)

quadratzahl(5)

2

Schreiben Sie eine Funktion, die die Kubikzahl zurückgibt (ohne Seiteneffekt).

Loading...

Lösungsvorschlag:

def kubikzahl(z: float):
    return z * z * z

print(kubikzahl(5))

3

Schreiben Sie eine Funktion, die als Seiteneffekt einen Dreiviertelkreis ausgibt.

Loading...

Lösungsvorschlag:

from pytamaro import Color, circular_sector, show_graphic, cyan

def dreiviertelkreis_seiteneff(radius: float, farbe: Color):
    show_graphic(circular_sector(radius, 360-90, farbe))

dreiviertelkreis_seiteneff(100, cyan)

4

Lösung: Sie können zwar die Parameter verändern (Grösse und Farbe), aber Sie können den Dreiviertelkreis nicht drehen, da sie ihn als fertige Ausgabe erhalten - nicht als veränderbare Grafik.

5

Erstellen Sie einen Pacman.

  1. Erstellen Sie eine erste Funktion, die die Parameter radius und farbe erhält und einen Dreiviertelkreis zurückgibt.
  2. Erstellen Sie eine zweite Funktion, die den Paramter radius erhält und einen Pacman zurückgibt.

Rufen Sie in der zweiten Funktion die erste Funktion auf.

Loading...
Pacman-Lösung
def dreiviertelkreis(radius: float, farbe: Color) -> Graphic:
    return circular_sector(radius, 360-90, farbe)

def pacman(radius: float) -> Graphic:
    return rotate(45, dreiviertelkreis(radius, yellow))

show_graphic(pacman(100))

Toolbox

Nehmen Sie den Pacman in Ihre Toolbox auf. Achten Sie darauf, dass je nur eine Funktion aufnehmen.

Was Sie geübt und gelernt haben

Programmierkonzepte

  • Sie können Funktionen mit Rückgabewerten und Seiteneffekten erkennen und verwenden.
  • Sie kennen Vor- und Nachteile von Funktionen mit Rückgabewerten und Seiteneffekten.
  • Sie kennen die Vorteile von Datentypvorgaben bei Parametern und Rückgabewerten und können diese verwenden.

Python

  • (nichts Neues)

PyTamaro

  • (nichts Neues)

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Funktionen: Rückgabewert und Seiteneffekte

Logo of PyTamaro

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

Privacy PolicyPlatform Version 1cd5229 (Tue, 05 Nov 2024 16:55:57 GMT)