return beendet die Funktion
return tut zwei Dinge auf einmal: Es gibt einen Wert zurück, und es beendet die Funktion sofort. Der Rest der Funktion wird nicht mehr ausgeführt:
def addiere(a, b):
return a + b
print("Diese Zeile läuft nie.")
print(addiere(2, 3))Das gibt aus:
5Die Zeile nach return läuft nie, weil die Funktion eine Zeile davor zu Ende war.
Das ist zusammen mit Bedingungen praktisch. Die folgende Funktion beschreibt das Wetter anhand der Temperatur:
def wetter_beschreiben(grad):
if grad < 0:
return "frostig"
if grad < 20:
return "kühl"
return "warm"
print(wetter_beschreiben(-5))
print(wetter_beschreiben(12))
print(wetter_beschreiben(25))Das gibt aus:
frostig
kühl
warmVerfolgen wir die drei Aufrufe:
wetter_beschreiben(-5):-5 < 0istTrue, also gibt die Funktion"frostig"zurück und endet. Die zweite Bedingung wird nie geprüft.wetter_beschreiben(12): Die erste Bedingung istFalseund die zweiteTrue, also gibt die Funktion"kühl"zurück.wetter_beschreiben(25): Keine der Bedingungen istTrue, also kommt die Funktion bis zur letzten Zeile und gibt"warm"zurück.
Wir brauchten weder elif noch else: Sobald ein return ausgeführt wird, wird der Rest der Funktion ohnehin übersprungen. (Mit elif und else würde die Funktion genauso funktionieren.) Aber die Reihenfolge der Bedingungen ist wichtig, denn das erste return, das ausgeführt wird, gewinnt. Würde die Funktion zuerst grad < 20 prüfen, gäbe sie für -5 "kühl" zurück, denn -5 ist auch kleiner als 20.
So schreibst du es:
Anweisungen
- 1
Die Funktion
ticket_preisgibt den Preis einer Zooeintrittskarte für einen Besucher des angegebenen Alters zurück. Vorerst gibt sie für alle10zurück. Füge über der Zeilereturn 10Bedingungen hinzu: Kinder unter 6 Jahren kommen gratis hinein (0), und Besucher unter 18 zahlen5. Das Programm gibt dann0,5und10aus. - 2
Senioren ab 65 Jahren zahlen auch
5. Füge der Funktion eine Bedingung für sie hinzu und gib am Ende des Programmsticket_preis(70)aus.