7  Programmieren einfacher Funktionen

Autor:in

Jacques Mock Schindler

Veröffentlichungsdatum

20.10.2025

Open In Colab

7.1 Kreisfläche

Die Fläche eines Kreises berechnet sich nach der Formel \[ A = \pi r^2 \] wobei \(A\) die Fläche \(\pi\) die Kreiszahl - hier mit zwei Nachkommastellen - 3.14 und \(r\) den Radius des Kreises darstellt.

Aufgabe: Implementieren Sie eine Funktion kreisflaeche() welche ein Argument r für Radius entgegennimmt und die Fläche eines Kreises zurückgibt.

def kreisflaeche():
    # TODO: implementieren Sie die Funktion

7.2 Quotient

Ein Quotient kann unterschiedlich dargestellt werden. Eine Möglichkeit ist die Darstellung als Dezimalzahl.

Aufgabe: Implementieren Sie eine Funktion quotient() welche zwei Dezimalzahlen als Argumente entgegennimmt und den Quotienten als Dezimalzahl zurückgibt. Sehen Sie für den Sonderfall der Division durch Null eine Lösung vor.

def quotient():
    # TODO: implementieren Sie die Funktion

7.3 Fakultät

Die Fakultät ist jene Funktion, welche das Produkt der natürlichen Zahlen bis \(n\) berechnet und wird als \(n!\) geschrieben. Es gilt also

\[ n! = 1 \cdot 2 \cdot 3 \cdot ... \cdot n \]

Wobei zu beachten ist, dass \(0! = 1\) gilt.

Aufgabe: Implementieren Sie eine Funktion fakultaet welche als Argument \(n \in \mathbb{N}\) entgegennimmt.

def fakultaet():
    # TODO: implementieren Sie die Funktion

7.4 Quadratische Gleichungen (Mitternachtsformel)

Quadratische Gleichungen der Form \(ax^2 + bx + c = 0\) können mit der Formel

\[ x_{1,2} = \frac{-b\pm\sqrt{b^2-4ac}}{2a} \]

gelöst werden.
Für die Implementierung ergibt sich daraus allerdings das Problem, dass die Formel zwei Resultate ergibt und eine Python Funktion nur ein Objekt zurückgeben kann.

Als Workaround können die beiden Resultate in ein Tupel gepackt werden. Ein Tupel ist eine unveränderliche Zusammenstellung mehrer Werte. In Python werden sie in Klammern dargestellt. Die Zuweisung eines Tupels zu einer Variabel sieht dementsprechend folgendermassen aus:

t = (wert_1, wert_2, ..., wert_n)

Die detaillierten eigenschaften von Tupeln können hier ausser Acht gelassen werden. Es reicht \(x_1\) und \(x_2\) einem Tupel resultat zuzuweisen und resultat zurückzugeben.

Aufgabe: Implementieren Sie eine Funktion mitternachtsformel, welche die Argumente \(a\), \(b\) und \(c\) entgegennimt und das Tupel \(x_1\) und \(x_2\) zurückgibt.

def mitternachtsformel():
    # TODO: implementieren Sie die Funktion

7.5 Musterlösungen

7.5.1 Kreisfläche

def kreisflaeche(r: float) -> float:
    """
    Berechnet die Fläche eines Kreises anhand des gegebenen Radius.

    Parameter
    ----------
    r : float
        Der Radius des Kreises.

    Rückgabewert
    ------------
    float
        Die Fläche des Kreises.
    """
    PI = 3.14  # Näherungswert für die Kreiszahl Pi
    a = PI * r ** 2  # Formel: Fläche = Pi * r^2
    return a

7.5.2 Quotient

def quotient(z: float, n: float) -> float:
    """
    Berechnet den Quotienten zweier Zahlen.

    Gibt eine Fehlermeldung zurück, falls der Nenner null ist.

    Parameter
    ----------
    z : float
        Der Zähler der Division.
    n : float
        Der Nenner der Division.

    Rückgabewert
    ------------
    float oder str
        Der berechnete Quotient oder eine Fehlermeldung als Zeichenkette,
        falls eine Division durch Null versucht wurde.
    """
    
    # Fehlermeldung für Division durch Null
    fehlermeldung = "Eine Division durch Null ist unzulässig."  
    if n == 0:
        return fehlermeldung  # Fehlerfall: Division durch Null
    else:
        q = z / n  # Berechnung des Quotienten
        return q

7.5.3 Fakultät

def fakultaet(n: int) -> int:
    """
    Berechnet die Fakultät einer nicht-negativen ganzen Zahl n.

    Die Fakultät n! ist das Produkt aller positiven ganzen Zahlen
    von 1 bis n. Für n < 0 ist die Fakultät nicht definiert.

    Parameter:
        n (int): Die Zahl, deren Fakultät berechnet werden soll.

    Rückgabewert:
        int: Die Fakultät von n, oder eine Fehlermeldung als String bei n < 0.
    """
    if n < 0:
        # Fakultät ist für negative Zahlen nicht definiert
        return f'Die Fakultät für {n} ist nicht definiert.'
    elif n == 0:
        # Per Definition ist 0! = 1
        return 1
    else:
        prod = 1  # Initialisiere das Produkt mit 1
        for i in range(1, n + 1):
            prod *= i  # Multipliziere prod mit dem aktuellen Wert von i
        return prod  # Gib das berechnete Produkt zurück

7.5.4 Mitternachtsformel

def mitternachtsformel(a: float, b: float, c: float) -> tuple:
    """
    Löst eine quadratische Gleichung der Form ax² + bx + c = 0 
    mit der Mitternachtsformel.

    Parameter
    ----------
    a : float
        Der Koeffizient vor x² (muss ungleich 0 sein).
    b : float
        Der Koeffizient vor x.
    c : float
        Der konstante Term.

    Rückgabewert
    ------------
    tuple oder str
        Ein Tupel mit den beiden Lösungen (x1, x2) oder eine Fehlermeldung
        als Zeichenkette, falls die Gleichung keine reellen Lösungen besitzt.
    """
    # Berechnung der Diskriminante: d = b² - 4ac
    d = b ** 2 - 4 * a * c
    if d < 0:
        # Keine reellen Lösungen vorhanden
        return "Diese Gleichung hat keine Lösung."  
    else:
        # Berechnung der beiden Lösungen mit der Mitternachtsformel:
        # x1 = (-b + d ** (1/2)) / (2a)
        # x2 = (-b -  d ** (1/2)) / (2a)
        x1 = (-b + d ** (1/2)) / (2 * a)
        x2 = (-b - d ** (1/2)) / (2 * a)
        return (x1, x2)