At My Fingertips

Rapid Playground

Documentation

Funktionen: Rückgabewert und Seiteneffekte

Aufwärmen

Folgender Code soll 2, 2 und 3 addieren und 7 ausgeben. Korrigieren Sie.

Loading...

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

Was müssen Sie bei den nächsten Feldern ändern?

Loading...
Loading...

Denken Sie auch daran, am Schluss des Funktionskopfes den Ausgabetyp mit ...) -> float: zu fixieren. So wird 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 x.
  • Der Funktionsaufruf ist selbst ein Parameter in einem Ausgabebefehl:

show_graphic(viertelkreis(50, blue)) oder 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 ist, um hilfreiche Fehlermeldungen zu erhalten.

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ösungsvorschlag: 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, indem Sie

  • eine erste Funktion erstellen, die einen Dreiviertelkreis zurückgibt und dafür folgende Parameter erhält:
    • Radius
    • Farbe
  • eine zweite Funktion erstellen, die einen Pacman zurückgibt und dafür folgenden Parameter erhält:
    • Radius

Rufen Sie in der zweiten Funktion die erste Funktion auf.

Loading...

Toolbox

Nehmen Sie den Pacman in Ihre Toolbox auf. Achten Sie darauf, dass nur die richtigen Funktionen und Ausgabebefehle in Ihrer Sammlung bleiben!

Was Sie gelernt haben (Lernziele)

  • 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 den Sinn von Datentypenvorgaben bei Parametern und Rückgabewerten.

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 320e1c5 (Thu, 16 May 2024 14:11:39 GMT)