Durch das Definieren von Unterprogrammen und dem mehrmaligen Aufruf dieser, vermeidet man, dass Code doppelt geschrieben werden muss.
Hinweis: Analogon
Ein kleiner Schritt, den wir immer wieder machen… z.B. das Handy entsperren – das machen wir zwischendurch immer wieder und ist sozusagen «automatisiert»
Definition
- Zeile 1
- Eine Unterprogramm beginnt mit dem Schlüsselwort
def
(für definition). - Anschliessend folgt ein Name für das Unterprogramm. Der Name kann wie bei den Variablennamen mehr oder weniger frei gewählt werden.
- Dann kommen die Argumente in einer runden Klammer.
- Die Definition wird mit einem Doppelpunkt abgeschlossen.
def name(args, kwargs):
do1
do2
...
return x
2
3
4
5
- Zeilen 2-4
- Der Inhalt des Unterprogramms.
- Hier ist beliebiger Code möglich.
- alles was zum Unterprogramm gehört, muss um eine Ebene (3 Leerzeichen oder 1 Tab) eingerückt werden.
- Letzte Zeile
- Das Unterprogramm wird mit der
return
-Anweisung abgeschlossen und kann einen Wert zurückgeben
Aufruf
Ein Unterprogramm rufen wir mit dessen Namen und einer runden Klammer auf. In die runde Klammer kommen die Argumente. Wenn es keine Argumente hat, steht dort eine leere runde Klammer.
z = name(args, kwargs)
Der Aufruf eines Unterprogramms wird wie ein Ausdruck ausgewertet. Das Ergebnis (der Rückgabewert) kann wie bei einem Ausdruck einer Variablen zugewiesen oder direkt in einem Ausdruck weiterverwendet werden.
Argumente
- args
- Einem Unterprogramm können Argumente (arguments) übergeben werden. Dadurch kann ein Unterprogramm mit variablen Eingaben eine Klasse von Problemen lösen.
- kwargs
- Eine Spezialität von Python sind sogenannte keyword arguments. Es handelt sich um benannte Argumente. Der Vorteil: Weil sie benannt sind, können sie in beliebiger Reihenfolge stehen. Zudem können sie einen Default-Wert haben und sind dann optional.
Rückgabewerte
Das Unterprogramm kann mit dem Schlüsselwort return
einen sogenannten Rückgabewert liefern. return
stellt das Ende des Unterprogramms dar. Der Rückgabewert kann von einem beliebigen Datentyp sein.
Beispiel
import math
def hypothenuse(a, b):
c = math.sqrt(a**2 + b**2)
return c
print(hypothenuse(3,4))
2
3
4
5
6
7
import math
def pythagoras(a=0, b=0, c=0):
if c==0:
return math.sqrt(a**2 + b**2)
elif a==0:
return math.sqrt(c**2 - b**2)
elif b==0:
return math.sqrt(c**2 - a**2)
else:
return "Error: a, b oder c muss leer gelassen werden"
print(pythagoras(a=3,b=4))
print(pythagoras(c=5,b=4))
print(pythagoras(a=3,c=5))
print(pythagoras(a=3,b=4,c=5))
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Aufgabe
Aufgabe: «Quadratische Gleichung»
Programmiere ein Unterprogramm das eine Quadratische Gleichung löst. Das Programm soll wie folgt aufgerufen werden
quadr(a, b, c)
Gib die Lösungen mit print
aus.
Zusatzaufgabe
Erweitere das obenstehende Unterprogramm:
- Lösungen mit
return
zurückgeben - Was machen, wenn keine oder mehrere Lösungen? (Text? Liste?)
- verwende benannte Argumente (wohl aber ohne default-Wert)