DE | EN

Python Funktionen: Verstehen und Anwenden

Im Verlauf der Lehrveranstaltung wurden häufig Python Anweisungen wie die print-Funktion verwendet. Obwohl Sie diese anwenden können, ist das dahinterstehende Konzept von Anweisungen als Funktionen möglicherweise noch nicht vollständig klar. Dieser Abschnitt soll Ihnen dabei helfen, Python Funktionen besser zu verstehen und selbst zu programmieren.

1. Was sind Python Funktionen?

Funktionen in Python helfen dabei, den Code strukturiert und übersichtlich zu gestalten. Sie können als separate Unterprogramme verstanden werden, die durch ihren Namen aufgerufen werden. Bei einem Aufruf werden alle Anweisungen in der Funktion nacheinander ausgeführt, bevor das Programm normal weiterläuft.

2. Die print-Funktion

Die print-Funktion, ein häufiges Beispiel in Python, ist eine eingebaute Funktion. Das bedeutet, dass sie bereits von Python bereitgestellt wird und nicht selbst programmiert werden muss. Sie ermöglicht es, Ausgaben auf der Konsole zu erzeugen.

Python
print("Das ist eine Ausgabe")

3. Eigene Funktionen definieren

Neben eingebauten Funktionen wie print können Sie in Python auch eigene Funktionen definieren. Eine Funktion wird mit dem Schlüsselwort 'def' eingeleitet, gefolgt von einem frei wählbaren Namen und einem Klammerpaar.

Python
def say_hello():
    print("Hallo Hendrik")
    print("Willkommen zurück")

4. Funktionen aufrufen

Um eine definierte Funktion auszuführen, muss sie aufgerufen werden. Das geschieht durch die Angabe des Funktionsnamens gefolgt von einem Klammerpaar.

Python
say_hello()

5. Einrückung und Funktionsstruktur in Python

Die Einrückung in Python ist nicht nur ein Stilelement, sondern eine essentielle Syntaxregel. In Python definiert die Einrückung den Umfang einer Funktion, d.h., welche Zeilen zum Funktionskörper gehören.

Wenn Sie eine Funktion mit 'def' beginnen, gehören alle eingerückten Zeilen direkt nach der Funktionsdefinition zum Funktionskörper. Diese Zeilen werden ausgeführt, wenn die Funktion aufgerufen wird. Nicht eingerückte Zeilen gehören nicht mehr zur Funktion und markieren das Ende des Funktionskörpers.

Python
def beispiel_funktion():
    # Diese Zeile gehört zur Funktion
    print("Innerhalb der Funktion")
# Diese Zeile gehört nicht zur Funktion
print("Außerhalb der Funktion")

Das korrekte Einrücken ist essentiell, da sonst der Code nicht wie beabsichtigt oder überhaupt nicht ausgeführt wird. In Python wird üblicherweise eine Einrückung von vier Leerzeichen verwendet.

Warum sind Funktionen wichtig in der Programmierung?

Funktionen sind ein fundamentales Konzept in der Programmierung, das dazu beiträgt, Code effizient und effektiv zu gestalten. Sie ermöglichen es, Codeblöcke zu isolieren, die eine spezifische Aufgabe ausführen, wodurch der Code nicht nur einfacher zu verstehen und zu verwenden, sondern auch leichter zu testen und zu warten ist.

Durch die Verwendung von Funktionen kann vermieden werden, dass Code mehrfach geschrieben werden muss. Dies reduziert die Fehleranfälligkeit, da Änderungen nur an einer Stelle im Code vorgenommen werden müssen. Außerdem erleichtert es die Wartung des Programms, da Funktionen als eigenständige Module betrachtet werden können, die unabhängig voneinander entwickelt und optimiert werden können.

Was sind Funktionen und welche Vorteile bieten sie?

Zukünftige Verwendung von Funktionen

Um ein tieferes Verständnis und eine bessere Praxis in Python zu fördern, wird in zukünftigen Übungen und Beispielen der Fokus auf die Verwendung von Funktionen gelegt. Jedes Problem wird durch das Definieren und Aufrufen von Funktionen gelöst, um die Konzepte zu verinnerlichen und die Vorteile von modularem Code zu nutzen.

7. Umfassendes Beispiel

Das folgende Beispiel illustriert die Definition und Verwendung von Funktionen in Python:

Python
def begruessung(name):
    print(f"Hallo, {name}!")
    
def hauptprogramm():
    begruessung("Alice")
    begruessung("Bob")
    
# Hauptprogramm wird aufgerufen
hauptprogramm()

In diesem Beispiel wird eine Funktion 'begruessung' definiert, die einen Namen als Parameter nimmt und eine Begrüßung ausgibt. Eine weitere Funktion 'hauptprogramm' ruft die 'begruessung'-Funktion mit verschiedenen Namen auf. Das Hauptprogramm wird durch den Aufruf der 'hauptprogramm'-Funktion gestartet.

  1. Funktionsdefinition 'begruessung':
    • Die Funktion 'begruessung' wird mit dem Parameter 'name' definiert.
    • Der Parameter 'name' dient als Platzhalter für Werte, die beim Aufruf der Funktion übergeben werden.
    • Innerhalb der Funktion wird der Wert von 'name' genutzt, um eine personalisierte Begrüßung zu erstellen.
    • Der Ausdruck f"Hallo, {name}!" ist ein formatierter String, der den Wert der Variablen 'name' in den Text einbettet.
  2. Funktion 'hauptprogramm':
    • Die Funktion 'hauptprogramm' ruft die 'begruessung'-Funktion zweimal auf.
    • Beim ersten Aufruf wird 'Alice' als Argument für 'name' übergeben, beim zweiten Aufruf 'Bob'.
    • Jeder Aufruf der 'begruessung'-Funktion führt zu einer individuellen Ausgabe basierend auf dem übergebenen Argument.
  3. Aufruf des 'hauptprogramm':
    • Das 'hauptprogramm' wird am Ende des Codes aufgerufen.
    • Dieser Aufruf startet die Ausführung der im 'hauptprogramm' definierten Funktionsaufrufe.

Übungsaufgaben zur Einführung in Funktionen in Python

Übungsaufgabe 1: Einfache Berechnung in einer Funktion

Strukturieren Sie den folgenden Code neu, indem Sie eine Funktion erstellen, die eine einfache Rechnung ausführt und das Ergebnis ausgibt. Der Originalcode ist:

Python
# Originalcode
x = 5
y = 10
ergebnis = x + y
print("Das Ergebnis der Addition ist:", ergebnis)

Schreiben Sie diesen Code neu, indem Sie eine Funktion verwenden, die keine Parameter annimmt und das Ergebnis direkt in der Funktion berechnet und ausgibt.

Übungsaufgabe 2: Adressabfrage mit Funktion

Strukturieren Sie den folgenden Code neu, indem Sie eine Funktion erstellen, die nach der Adresse des Benutzers fragt und diese dann ausgibt. Der Originalcode ist:

Python
# Originalcode
name = input("Bitte geben Sie Ihren Namen ein: ")
adresse = input("Bitte geben Sie Ihre Adresse ein: ")
print("Name:", name)
print("Adresse:", adresse)

Schreiben Sie diesen Code neu, indem Sie eine Funktion erstellen, die die Benutzerdaten abfragt und in der Funktion ausgibt.

Übungsaufgabe 3: Funktion zur Erfassung von Benutzerinformationen

Schreiben Sie eine Funktion, die den Benutzer nach seinem Namen und seiner E-Mail-Adresse fragt und diese Informationen ausgibt. Die Funktion sollte keine Parameter benötigen und direkt die input()- und print()-Funktionen verwenden. Versuchen Sie, die erfassten Informationen in der Funktion selbst auszugeben.

Anleitung:

Übungsaufgabe 4: Funktion mit einfacher Altersabfrage

Schreiben Sie eine Funktion, die das Alter des Benutzers erfragt und eine einfache Bedingung verwendet, um zu bestimmen, ob der Benutzer volljährig ist oder nicht. Die Funktion sollte direkt die input()- und print()-Funktionen verwenden, ohne return zu nutzen.

Anleitung:

Was sind Parameter?

Parameter sind spezielle Variablen in der Definition einer Funktion, die dazu dienen, Daten von außen aufzunehmen, wenn die Funktion aufgerufen wird. Sie ermöglichen es der Funktion, mit verschiedenen Eingaben zu arbeiten.

Beispiel einer Funktion mit Parametern

Das folgende Beispiel demonstriert, wie eine einfache Funktion mit einem Parameter definiert und verwendet wird:

Python
def begruessung(name):
    print("Hallo, " + name + "!")

begruessung("Stefan")  # Ausgabe: Hallo, Stefan!

Die Funktion begruessung nimmt einen Parameter name an. Beim Aufruf der Funktion wird der String "Stefan" als Argument übergeben, wodurch die Begrüßung personalisiert ausgegeben wird.



Einführung in 'return' in Python-Funktionen

In Python und vielen anderen Programmiersprachen wird das Schlüsselwort return verwendet, um einen Wert aus einer Funktion zurückzugeben. Sobald eine return-Anweisung erreicht wird, beendet sie die Funktion und liefert den Wert, der auf return folgt, an den Aufrufer zurück.

Dieses Beispiel demonstriert eine einfache Funktion, die eine Konstante zurückgibt. Es verdeutlicht, wie return verwendet wird, um einen spezifischen Wert aus der Funktion zu senden, was in diesem Fall die Zahl 5 ist. Die Rückgabe von Konstanten kann in Szenarien nützlich sein, in denen feste Werte erforderlich sind, um Berechnungen oder Zustandsprüfungen in anderen Teilen des Programms zu unterstützen.

Python
def gib_fuenf_zurueck():
    return 5

resultat = gib_fuenf_zurueck()
print(resultat)  # Ausgabe: 5

Dieses Beispiel zeigt eine Funktion, die die Summe zweier Zahlen berechnet und zurückgibt. Die Verwendung von return ermöglicht es, das Ergebnis der Summenbildung an den Aufrufer zu übermitteln, der dieses Ergebnis dann weiterverwenden kann, beispielsweise für weitere Berechnungen oder Anzeigezwecke.

Python
def addiere(a, b):
    summe = a + b
    return summe

ergebnis = addiere(3, 4)
print(ergebnis)  # Ausgabe: 7

Dieses Beispiel illustriert, wie eine Funktion abhängig von einer Bedingung unterschiedliche Werte zurückgeben kann. Es ist ein nützliches Muster für Entscheidungsfindungen innerhalb von Funktionen, wobei je nach Bedingung unterschiedliche Ergebnisse zurückgegeben werden, die den weiteren Programmfluss beeinflussen können.

Python
def ist_zahl_gerade(zahl):
    if zahl % 2 == 0:
        return "Gerade"
    else:
        return "Ungerade"

status = ist_zahl_gerade(10)
print(status)  # Ausgabe: Gerade

Das Schlüsselwort return ist wesentlich, um Funktionen in Python effektiv zu nutzen, da es die Wiederverwendung und Modularität von Code ermöglicht.

Fortgeschrittene Übungsaufgaben zur Funktionsprogrammierung in Python

Übungsaufgabe 5: Neu Strukturierung des Codes in eine Funktion mit Rückgabewert

Ziel: Strukturieren Sie den folgenden Code neu, indem Sie eine Funktion erstellen, die zwei Zahlen als Parameter aufnimmt und ihre Summe zurückgibt. 'Zurückgeben' bedeutet, dass das Ergebnis der Operation mittels return an den Aufrufer der Funktion übermittelt wird. Der Originalcode ist:

Python
# Originalcode
x = 10
y = 20
ergebnis = x + y
print("Das Ergebnis der Addition ist:", ergebnis)

Erstellen Sie eine Funktion namens addiere, die x und y als Parameter nimmt und das Ergebnis zurückgibt. Anschließend wird dieses Ergebnis außerhalb der Funktion ausgegeben.

Übungsaufgabe 6: Funktion mit Schleifen

Ziel: Entwickeln Sie eine Funktion, die eine Liste von Zahlen als Parameter aufnimmt und die Summe aller Zahlen zurückgibt. Verwenden Sie eine for-Schleife innerhalb der Funktion.

Anweisungen: def, for, return, Liste

Schreiben Sie eine Funktion namens summiere_liste, die als Parameter eine Liste von Zahlen erhält und die Summe dieser Zahlen berechnet und zurückgibt.

Übungsaufgabe 7: Funktion mit bedingter Logik

Ziel: Erstellen Sie eine Funktion, die eine Zahl als Parameter nimmt und überprüft, ob diese Zahl gerade oder ungerade ist. Geben Sie das Ergebnis als String zurück.

Anweisungen: def, if, elif, else, return, Vergleiche

Implementieren Sie eine Funktion namens pruefe_gerade, die bestimmt, ob die übergebene Zahl gerade oder ungerade ist, und entsprechend "Gerade" oder "Ungerade" zurückgibt.

Übungsaufgabe 8: Neu Strukturierung eines komplexen Programms mit mehreren Funktionen

Ziel: Strukturieren Sie den folgenden Code neu, indem Sie ihn in mindestens drei separate Funktionen unterteilen. Der Originalcode ist:

Python
# Originalcode
produkte = input("Geben Sie die Produkte ein, getrennt durch Kommas: ")
preise = input("Geben Sie die Preise ein, getrennt durch Kommas: ")
preis_liste = [float(preis) for preis in preise.split(',')]
gesamtpreis = sum(preis_liste)
print("Gesamtpreis: ", gesamtpreis)
if gesamtpreis > 100:
    print("Sie erhalten einen Rabatt!")
else:
    print("Kein Rabatt verfügbar.")

Teilen Sie diesen Prozess in mindestens drei Funktionen auf:

  1. Funktion 1: Eine Funktion zur Eingabe und Verarbeitung der Produkte und Preise.
  2. Funktion 2: Eine Funktion zur Berechnung des Gesamtpreises.
  3. Funktion 3: Eine Funktion zur Überprüfung, ob ein Rabatt gewährt wird, und zur Ausgabe der entsprechenden Nachricht.



zur Lösung

nächstes Übungsblatt