Funktionen#

Erstmal vorweg: Es gibt in Python keine Main-Funktion wie in C. Der Inhalt der Main-Funktion wird im globalen Bereich geschrieben und ausgeführt. Wenn man im Arbeitsleben Python-Code schreibt, ist dies unerwünscht und wird anders gehandhabt. Das ist für diese Einführung jedoch nicht von Bedeutung.

Erstellen einer Funktion#

Um eine Funktion zu definieren, wird das Keyword def benutzt.

Anschließend wird der Funktion ein Name zugewiesen und in runden Klammern gibt man die Parameter an.

Man beendet den Funktionskopf nun mit einem Doppelpunkt, nach welchem man die nächste Zeile einrückt und dann den eigentlichen Inhalt der Funktion angibt.

Beispiel:

def ich_printe_falschherum(input_string):
    result = ""
    for i in range(1, len(input_string)+1):
        result += input_string[-i] # Der "+"-operator bei Strings konkateniert
    print(result)

ich_printe_falschherum("Hello World!")
# !dlroW olleH

Verallgemeinert:

def funktions_name(parameter1, parameter2, ...):
	<Funktionsrumpf>

Es ist ebenfalls möglich Defaultwerte für Parameter anzugeben. Dafür weist man den Parametern bereits einen Wert zu. Sobald ein Defaultwert angegeben wurde, müssen alle Werte rechts davon ebenfalls Defaultwerte haben Beispiel:

def summe_von_bis_zu_vier_zahlen(a, b, c=0, d=0):
    return a + b + c + d

print(summe_von_bis_zu_vier_zahlen(1,2))
# 3

print(summe_von_bis_zu_vier_zahlen(1,2,3))
# 6

print(summe_von_bis_zu_vier_zahlen(1,2,3,4))
# 10    

Rückgabewerte#

Mit dem Keyword return kann man angeben, was die Funktion zurückgeben soll. Die Besonderheit von Python liegt darin, dass man mehrere Werte zurückgeben kann.

Angenommen eine Funktion erhält einen String aus ausschließlich Kleinbuchstaben und soll berechnen, wie viele Vokale und wie viele Konsonanten in dem String vorkommen. Zusätzlich soll die Funktion zurückgeben, ob es weniger Vokale als Konsonanten gibt (in Form eines Wahrheitswertes). In anderen Programmiersprachen müsste man eine Datenstruktur erstellen, um sowohl zwei Integer Werte als auch einen Wahrheitswert zurückgeben zu können. In Python gibt man einfach alle drei zurück, jeweils durch Komma getrennt.

def vokale_und_konsonanten(input_string):
	anzahl_vokale = 0
	anzahl_konsonanten = 0
	for buchstabe in input_string: 	# Man kann über einen String genauso iterieren wie über eine Liste
		if buchstabe in ["a", "e", "i", "o", "u"]:
			anzahl_vokale += 1
		else:
			anzahl_konsonanten += 1
	return anzahl_vokale, anzahl_konsonanten, anzahl_vokale < anzahl_konsonanten


anzahl_vokale, anzahl_konsonanten, es_kommen_mehr_konsonanten_vor = vokale_und_konsonanten("algdat")
print(anzahl_vokale)
# 2
print(anzahl_konsonanten)
# 4
print(es_kommen_mehr_konsonanten_vor)
# True

Da kann man wieder auf die Mehrfachzuweisung schließen. Da die Funktion drei Werte zurückgibt und man drei Variablen auf der linken Seite hat, haben beide Seiten des Zuweisungsoperators gleich viele Operanden. Also ist dies eine gültige Zuweisung.

Rekursion#

Rekursion funktioniert in Python genauso wie in anderen Programmiersprachen auch. Eine Funktion ruft sich selbst auf. Als Beispiel die rekursive Berechnung der n-ten Fibonacci-Zahl.

def fib_rek(n):
    if n <= 1:
        return n
    else:
        return fib_rek(n-1) + fib_rek(n-2)
        
        
print(fib_rek(6))
# 8

Aufgabe#

Erstellen Sie eine Funktion, welche einen positiven Integerwert als Argument erhält und True zurückgibt, falls der Wert eine gerade Zahl ist. Ansonsten soll False zurück gegeben werden. Testen Sie die Funktion für ein paar Zahlen ihrer Wahl. Sie müssen nicht sicherstellen, dass wirklich eine positive Ganzzahl eingegeben wurde. Gehen Sie davon aus, dass nichts anderes eingegeben wird. Sie können auch gerne versuchen, mehrere Lösungen zu finden.

# Hier können Sie ihren Versuch schreiben...