Lektion 10 von 35Python
Python · Lektion 10 · 30 Minuten
Eigene Funktionen
Das lernst du
- Eigene Funktionen mit
defschreiben - Werte mit Parametern übergeben und mit
returnzurückgeben - Funktionen in anderen Funktionen wiederverwenden
Warum eigene Funktionen?
Du benutzt schon die ganze Zeit Funktionen: print(), len(), input(). Jetzt baust du eigene! Eine Funktion ist ein Mini-Programm mit Namen. Du schreibst es einmal und kannst es dann so oft aufrufen, wie du willst.
def begruessen():
print("Hallo!")
print("Schön, dass du da bist.")
begruessen()
begruessen()def heißt „definiere“. Der Code in der Funktion ist eingerückt und läuft erst, wenn du die Funktion aufrufst.
Parameter: Werte hineingeben
In die Klammern schreibst du Parameter, also Platzhalter für Werte, die du beim Aufruf mitgibst:
def begruessen(name, sprache="de"):
if sprache == "en":
print(f"Hello {name}!")
else:
print(f"Hallo {name}!")
begruessen("Mia")
begruessen("Tom", "en")sprache="de" ist ein Standardwert: Lässt du ihn beim Aufruf weg, wird "de" benutzt.
return: Ergebnisse zurückgeben
print() zeigt nur etwas an. Mit return gibt die Funktion ein Ergebnis zurück, mit dem du weiterrechnen kannst:
def flaeche(breite, hoehe):
ergebnis = breite * hoehe
return ergebnis
zimmer = flaeche(4, 3)
flur = flaeche(5, 1)
print(f"Zusammen: {zimmer + flur} m²")Drück auf Schritte: Wenn Python in die Funktion springt, siehst du einen eigenen Speicherbereich „In der Funktion flaeche()“. Variablen wie ergebnis gibt es nur dort – nach dem return sind sie wieder weg.
Merke: Nach
returnist die Funktion sofort zu Ende. Code, der danach in der Funktion steht, wird nicht mehr ausgeführt.
Funktionen kombinieren
Richtig stark werden Funktionen, wenn sie sich gegenseitig benutzen. So bleibt jede Funktion kurz und verständlich:
def in_euro(cent):
return cent / 100
def preis_text(cent):
return f"{in_euro(cent):.2f} €"
print(preis_text(250))
print(preis_text(1999)):.2f im f-String bedeutet: Zeige genau 2 Nachkommastellen.
Kurz-Check
Bevor es an die Aufgabe geht: Was gibt dieses Programm aus? Tipp deine Vermutung ein – Python rechnet danach nach.
def doppelt(zahl):
return zahl * 2
print(doppelt(3) + doppelt(1))Deine Aufgabe
Jetzt bist du dran
Schreib zwei Funktionen. ist_gerade(zahl) gibt True zurück, wenn die Zahl gerade ist, sonst False (Tipp: zahl % 2 ist der Rest beim Teilen durch 2). zaehle_gerade(liste) bekommt eine Liste mit Zahlen und gibt zurück, wie viele davon gerade sind. Benutze dafür ist_gerade.
def ist_gerade(zahl):
# Gib True oder False zurück
pass
def zaehle_gerade(liste):
# Zähle mit Hilfe von ist_gerade
pass
print(ist_gerade(4))
print(zaehle_gerade([1, 2, 3, 4, 6]))- Denkanstoß
Eine Zahl ist gerade, wenn zahl
%2==0 ist. Gib das Ergebnis mitreturnzurück. - Welcher Befehl hilft?
Starte mit anzahl
=0, geh durch die Liste und erhöhe anzahl, wennist_gerade(zahl)Trueist. Am Endereturnanzahl.Ruf in
zaehle_geradedie Funktionist_geradeauf, statt die Rechnung zu wiederholen. - Lückencode – ergänze die ___
def ist_gerade(zahl): return ___ def zaehle_gerade(liste): anzahl = ___ for zahl in ___: if ___: anzahl = ___ return ___ print(ist_gerade(4)) print(zaehle_gerade([1, 2, 3, 4, 6]))
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:
def ist_gerade(zahl):
return zahl % 2 == 0
def zaehle_gerade(liste):
anzahl = 0
for zahl in liste:
if ist_gerade(zahl):
anzahl = anzahl + 1
return anzahl
print(ist_gerade(4))
print(zaehle_gerade([1, 2, 3, 4, 6]))Für Schnelle
Profi-Aufgabe
Schreib ist_palindrom(text). Ein Palindrom liest sich vorwärts und rückwärts gleich, wie „Anna“ oder „Lagerregal“. Groß- und Kleinschreibung und Leerzeichen zählen nicht: Auch „Ein Esel lese nie“ ist ein Palindrom. Die Funktion gibt True oder False zurück.
def ist_palindrom(text):
return False
print(ist_palindrom("Anna"))
print(ist_palindrom("Python"))Profi-Lösung anzeigen
def ist_palindrom(text):
sauber = text.lower().replace(" ", "")
return sauber == sauber[::-1]
print(ist_palindrom("Anna"))
print(ist_palindrom("Python"))