6  Eigene Funktionen definieren

Das Definieren eigener Funktionen eröffnet vielfältige Möglichkeiten in Python:

6.1 Syntax

Das Schlüsselwort def leitet die Funktionsdefinition ein. Es wird gefolgt vom Funktionsnamen und den Funktionsparametern, welche in runden Klammern () eingeschlossen sind. Der Funktionskopf wird mit einem Doppelpunkt : beendet. Der Anweisungsblock der Funktion ist eingerückt. Jede Funktion liefert einen Rückgabewert, welche durch das Schlüsselwort return an die aufrufende Stelle zurückgegeben wird. return beendet die Ausführung der Schleife, auch wenn es nicht am Ende des Anweisungsblocks steht.

def Funktionsname(Parameter1, Parameter2):
    Anweisungsblock
    return Rückgabewert

Damit die Funktion ausgeführt wird, muss der definierte Funktionsname aufgerufen werden. In der Funktion ist nach dem Schlüsselwort return eine weitere Anweisung enthalten, die nicht mehr ausgeführt wird.

# Beispiel 1: Summe der Quadrate

# Definition einer Funktion zur Berechnung der Summe der Quadrate von zwei Argumenten
def sum_quadrate(a, b):
    print('Argument a:', a)
    print('Argument b:', b)
    print(18 * '=')
    summe = a**2 + b**2
    return summe
    print("Anweisungen nach dem Schlüsselwort return werden nicht mehr ausgeführt.")

print(sum_quadrate(6, 7))
Argument a: 6
Argument b: 7
==================
85

Der Rückgabewert kann in einer Variablen gespeichert werden.

ergebnis = sum_quadrate(6, 7)
print(ergebnis)
Argument a: 6
Argument b: 7
==================
85

6.2 Optionale Parameter

Mit Hilfe von optionalen Parametern kann die Programmausführung gesteuert werden. Optionale Parameter müssen nach verpflichtend zu übergebenen Parametern definiert werden. In diesem Beispiel wird die print-Ausgabe der Funktion mit dem Parameter ausgabe gesteuert.

# Beispiel 2: optionale Argumente

# Definition einer Funktion zur Berechnung der Summe der Quadrate von zwei Argumenten
def sum_quadrate(a, b, ausgabe = False):
    if ausgabe:
      print('Wert Argument a:', a)
      print('Wert Argument b:', b)
      print(18 * '=')
    summe = a**2 + b**2
    return summe

print(sum_quadrate(42, 7), "\n")
print(sum_quadrate(42, 7, ausgabe = True))
1813 

Wert Argument a: 42
Wert Argument b: 7
==================
1813

Gibt es mehrere optionale Parameter, so erfolgt die Zuweisung von Argumenten positional oder über das Schlüsselwort.

# Beispiel 3: mehrere optionale Argumente

# Definition einer Funktion zur Berechnung der Summe der Quadrate von zwei Argumenten
def sum_potenzen(a, b, p = 2, ausgabe = False):
    if ausgabe:
      print('Argument a:', a)
      print('Argument b:', b)
      print('Argument p:', p)
      print(18 * '=')
    summe = a**p + b**p
    return summe

# positionale Übergabe
print(sum_potenzen(42, 7, 3, True), "\n")

# Übergabe per Schlüsselwort
print(sum_potenzen(42, 7, ausgabe = True, p = 4))
Argument a: 42
Argument b: 7
Argument p: 3
==================
74431 

Argument a: 42
Argument b: 7
Argument p: 4
==================
3114097

6.3 Rückgabewert(e)

Funktionen können in Python nur einen einzigen Rückgabewert haben. Trotzdem können mehrere Rückgabewerte mit einem Komma getrennt werden. Python gibt diese als Tupel zurück.

# Beispiel 4: mehrere Rückgabewerte

# Definition einer Funktion zur Berechnung der Summe der Quadrate von zwei Argumenten
def sum_potenzen(a, b, p = 2, ausgabe = False):
    if ausgabe:
      print('Argument a:', a)
      print('Argument b:', b)
      print('Argument p:', p)
      print(18 * '=')
    summe = a**p + b**p
    return a, b, summe

ergebnis = sum_potenzen(2, 7, ausgabe = False, p = 4)
print(ergebnis, type(ergebnis))
(2, 7, 2417) <class 'tuple'>

Mit dem Slice Operator kann ein bestimmter Rückgabewert ausgewählt werden.

print(ergebnis[2])

summe_potenzen = sum_potenzen(2, 7, ausgabe = False, p = 4)[2]
print(summe_potenzen, type(summe_potenzen))
2417
2417 <class 'int'>

6.4 Aufgaben Funktionen definieren

  1. Palindrom
    Schreiben Sie eine Funktion is_palindrome(), die prüft, ob es sich bei einer übergebenen Zeichenkette um ein Palindrom handelt.

Hinweis: Ein Palindrom ist eine Zeichenkette, die von vorne und von hinten gelesen gleich bleibt, wie beispielsweise ‘Anna’, ‘Otto’, ‘Lagerregal’. Palindrome müssen nicht aus Buchstaben bestehen, sie können sich auch aus Zahlen oder Buchstaben und Zahlen zusammensetzen wie beispielsweise ‘345g543’.

  1. Fibonacci-Zahlenreihe

Entwickeln Sie eine Funktion fibonacci(n), die die ersten n Zahlen der Fibonacci-Reihe generiert und als Liste zurückgibt. Die Fibonacci-Reihe beginnt mit 0 und 1, jede weitere Zahl ist die Summe der beiden vorhergehenden Zahlen.

  1. Verschlüsselung

Bei Geocachen werden oft verschlüsselte Botschaften als Rätsel verwendet. Oft wird folgende Logik zur Verschlüsselung angewendet:

  • A -> Z

  • B -> Y

  • C -> X

Schreiben Sie eine Funktion verschluesseln(str), die einen String als Eingabewert bekommt und einen verschlüsselten String zurückgibt. Wie können Sie einen verschlüsselten String am einfachsten wieder entschlüsseln?

  1. Temperaturkonverter

Entwickeln Sie eine Funktion temperatur_umrechnen(wert, von_einheit, nach_einheit), die eine Temperatur von einer Einheit in eine andere umwandelt. Die Funktion soll folgende Parameter verwenden:

  • wert: Der Temperaturwert, der umgewandelt werden soll.

  • von_einheit / nach_einheit: Die Einheit des Ausgangs- bzw. des Zielwerts als string. Mögliche Werte sind ‘C’ für Celsius, ‘F’ für Fahrenheit und ‘K’ für Kelvin.

Es gelten die folgenden Umrechnungsformeln zwischen den Einheiten:

  • Celsius nach Fahrenheit: F = C * 9/5 + 32

  • Fahrenheit nach Celsius: C = (F - 32) * 5/9

  • Celsius nach Kelvin: K = C + 273.15

  • Kelvin nach Celsius: C = K - 273.15

  • Fahrenheit nach Kelvin: K = (F - 32) * 5/9 + 273.15

  • Kelvin nach Fahrenheit: F = (K - 273.15) * 9/5 + 32

Die Musterlösung kann Marc machen

  (Arnold (2023))

Arnold, Simone. 2023. „Datenanalyse mit Python. Funktionen Module Dateien.“ Fachhochschule Dortmund.