2: Funktionen

Wir haben bereits eine Funktion gesehen: print(), die eine Zeile ausgibt. Um eine Funktion zu nutzen, schreibt man immer ihren Namen, gefolgt von einigen Argumenten in Klammern (). Das Wort Argument meint hier die Eingabedaten für eine Funktion. Dann wird die Funktion etwas tun - abhängig von den Argumenten. Wenn eine Funktion mehrere Argumente annimmt, werden sie mit Kommas (,) getrennt. Zum Beispiel kann auch print() mehrere Argumente annehmen; sie werden in einer bestimmten Reihenfolge ausgegeben, getrennt durch ein Leerzeichen. Das demonstrieren wir hier einmal:

Beispiel
Drei Zahlen ausgeben
Die zusätzlichen Leerzeichen in dem Beispielprogramm haben keine Auswirkung auf die Ausgabe. Zusätzliche Leerzeichen haben häufig keine Auswirkungen. Eine Ausnahme besteht bei zusätzlichen Leerzeichen am Anfang einer Zeile, auch Einrückung genannt; diese haben eine spezielle Bedeutung und können Fehler verursachen (klicke hier für ein Beispiel), wenn sie falsch genutzt werden. Du wirst später sehen, wie man Einrückungen richtig nutzt.

Eine Funktion kann auch Werte liefern (wie eine Ausgabe). Zum Beispiel gibt die Funktion max() (Abkürzung für Maximum) das größte aller ihrer Argumente zurück, die allesamt Zahlen sein müssen.

Beispiel
Versuche die Ausgabe des Programms zu erraten, bevor du es ausführst
Man nennt diesen Wert auch Rückgabewert. Für den Befehl max(42, 17) sagt man "Die Funktion max gibt den Wert 42 zurück."

Der beste Freund der max()-Funktion verhält sich ganz ähnlich: die min()-Funktion gibt das Minimum der Argumente zurück.

Multiple-Choice-Übung: Min and Max I
Wie lautet die Ausgabe des folgenden Programms?

x = 13
y = 7
a = max(x+y, x*2)
b = min(x, y)
print(a,b)
Richtig!

Funktionen können zu komplexen Ausdrücken kombiniert werden.

Kurzübung: Min and Max II
Wie lautet die Ausgabe des folgenden Programms? Hinweis

x = min(max(13, 7), 9)
print(x)
Richtig!

Du bist dabei nicht auf von Python vordefinierte Funktionen eingeschränkt. Du wirst auch noch lernen, selber Funktionen zu definieren.

Häufige Fehler

Wenn du eine Funktion mit zu wenigen oder zu vielen Argumenten aufrufst, wird ein Fehler erzeugt. Zum Beispiel benötigt max() mindestens eine Eingabe:

Beispiel
max-Aufruf mit zu wenigen Argumenten.

Es ist wichtig, sich die Fehlermeldungen genau durchzulesen, wenn das Programm nicht funktioniert. Python gibt meistens sinnvolle Hinweise darauf, was schief ging. Manchmal musst du dich aber auch ein wenig umschauen, um den Fehler zu finden - hier ist ein Beispiel,

Beispiel
Klick Run program und schaue dir den Fehler an.

Python gibt hier aus, einen Syntaxfehler gefunden zu haben:

 Traceback (most recent call last):
   In line 2 of the code you submitted:
     bigger = max(3, 4)
          ^
 SyntaxError: invalid syntax
Jedoch ist die Zeile bigger = max(3, 4) völlig korrekt. Das Problem ist quasi von der vorherigen Zeile rübergerutscht: Wir haben die schließende Klammer ) nach smaller = min(14, 99 vergessen und Python hat in der nächsten Zeile nach einem ) gesucht. Also: schaue auch die Zeilen darüber und darunter an, wenn du Probleme beim Debuggen deines Programms hast.

Übungen

Dies ist eine zweigeteilte Übung zur Benutzung der min()- und max()-Funktionen. Es gibt Verbindungen zwischen den Städten Maxime und Miniac mit verschiedenen Brücken. Jede Brücke hat ein gewisses Gewicht, das sie tragen kann.

Programmierübung: Eine Straße
Im ersten Teil gibt es nur eine einzelne Straße zwischen den beiden Städten. Die Straße hat drei Brücken mit den Gewichtsgrenzen (Engl. "weight limits") a, b und c, wie in folgendem Bild gezeigt:

Damit du mit deinem Truck diese Straße entlang fahren kannst, musst du zunächst über die Brücke mit der Gewichtsgrenze a, dann jene mit b und schließlich über die Brücke mit Gewichtsgrenze c. Dein Truck würde einen Unfall bauen, wenn du auf einer Brücke überladen fährst. Schreibe ein Programm, das das maximale Gewicht ausgibt, das auf dieser Straße transportiert werden kann. Du kannst dabei annehmen, dass die Variablen a, b und c bereits die Gewichtsgrenzen enthalten.

Programmierübung: Zwei Straßen
Teil 2: Jetzt das volle Programm. Es gibt auch eine zweite Straße mit zwei Brücken mit den Gewichtsgrenzen d und e, wie unten gezeigt.

Dein Truck kann eine der beiden Straßen nehmen. Schreibe ein Programm, das das Maximalgewicht ausgibt, das zwischen den beiden Städten transportiert werden kann. Auch hier kannst du wieder annehmen, dass die Variablen a, b, c, d und e bereits bekannt sind und die richtigen Werte enthalten.
Hinweis

Übung: Code-Durcheinander

Hier ist eine weitere Übung, in der du per Drag'n'Drop den Code in die richtige Reihenfolge bringen musst.

Sortierübung: Sortieren nach Größe
Ordne den Code so an, dass er x, y und z sortiert in aufsteigender Reihenfolge (also erst die Kleinste, dann die in der Mitte und dann die Größte) ausgibt.
Nutze Drag'n'Drop zum sortieren.
  • print(max(x, y, z))
  • print(min(x, y, z))
  • print(x+y+z-min(x, y, z)-max(x, y, z))

Wenn du die obigen Übungen gelöst hast, hast du zwei Möglichkeiten:

  • Du kannst direkt mit Lektion 3 weitermachen oder
  • weitere Übungen zu Funktionen in Lektion 2X ausprobieren.