Forscherheft · Folge 10

Eigene Funktionen mit def

Du hast schon viele eingebaute Funktionen benutzt: print(), input(), len(). Jetzt schreibst du selbst welche – mit def. Und am Ende bekommt dein Ratespiel seinen bisher ordentlichsten Umbau.

🧭 So funktioniert diese Folge

Auch diese Folge braucht keine Zusatzteile – nur deinen Pi, Tastatur und Maus.

💡 Merke dir das Wichtigste
🧪 Mach es an deinem Pi
🕹️ Mitmach-Aufgaben & Quiz
1

Warum Funktionen?

Du lernst: Was Funktionen sind und warum sie Code übersichtlicher machen.

📂 Bevor du startest

Leg einen neuen Ordner an: ~/Forscherheft/funktionen. Dort speicherst du die Übungsprogramme aus dieser Folge. ratespiel_v3.py kommt wie gewohnt in ~/Forscherheft/ratespiel.

Stell dir vor, du willst an drei Stellen im Code denselben Satz begrüßen. Ohne Funktion schreibst du ihn dreimal. Mit einer Funktion schreibst du ihn einmal – und rufst sie dreimal auf:

begruessung.py
# Ohne Funktion: print("Hallo, willkommen!") print("Hallo, willkommen!") print("Hallo, willkommen!") # Mit Funktion: def begrüße(): print("Hallo, willkommen!") begrüße() begrüße() begrüße()
def name():
Erstellt eine neue Funktion mit diesem Namen. Der eingerückte Code darunter gehört zur Funktion.
name()
Ruft die Funktion auf – führt den Code darin aus. So oft du willst!
💡 Merke dir

Eine Funktion ist ein wieder verwendbarer Code-Block mit einem Namen. Du schreibst den Code einmal (mit def) und kannst ihn dann beliebig oft aufrufen. Das spart Zeit und macht Fehler seltener.

Genau wie bei Mathe!
In der Schule hast du vielleicht gelernt: f(x) = x + 3. Das ist eine Funktion. In Python schreibst du dasselbe als def f(x): return x + 3 – mehr dazu in Station 3.

🧠 Schnell-Check: Was passiert, wenn du eine Funktion mit def schreibst, ohne sie aufzurufen?

Station 1 geschafft!
2

def und Parameter

Du lernst: Einer Funktion Daten mitgeben, damit sie flexibler wird.

Die Funktion aus Station 1 begrüßt immer gleich. Aber was, wenn du verschiedene Namen begrüßen willst? Dann gibst du der Funktion einen Parameter – eine Variable, die beim Aufruf befüllt wird:

hallo.py
def hallo(name): print("Hallo, " + name + "!") hallo("Max") hallo("Lena") hallo("Pi")
1
def hallo(name):name ist der Parameter. Er funktioniert wie eine Variable, die erst beim Aufruf einen Wert bekommt.
2
hallo("Max") – beim Aufruf wird name = "Max" gesetzt. Python führt den Code mit diesem Wert aus.
3
hallo("Lena") – beim zweiten Aufruf gilt name = "Lena". Selber Code, andere Daten!
💡 Merke dir

Ein Parameter ist eine Variable in den Klammern von def. Beim Aufruf gibst du den tatsächlichen Wert an – diesen nennt man dann Argument. In hallo("Max") ist "Max" das Argument.

🧠 Schnell-Check: Was gibt hallo("Welt") aus, wenn die Funktion def hallo(name): print("Hallo, " + name + "!") lautet?

🧪 Mach es an deinem Pi

Tippe hallo.py ab und starte es. Schreibe dann eine zweite Funktion verdopple(zahl), die zahl * 2 ausgibt. Rufe sie mit verschiedenen Zahlen auf.

Station 2 geschafft!
3

return – Ergebnisse zurückgeben

Du lernst: Wie eine Funktion ein Ergebnis berechnet und zurückgibt.

Bisher haben unsere Funktionen nur etwas gedruckt. Aber oft will man, dass eine Funktion etwas berechnet und das Ergebnis zurückgibt, damit man damit weiterarbeiten kann. Dafür gibt es return:

quadrat.py
def quadrat(zahl): ergebnis = zahl * zahl return ergebnis x = quadrat(5) print(x) # 25 print(quadrat(3)) # 9 print(quadrat(4) + quadrat(5)) # 41
return wert
Gibt den Wert aus der Funktion zurück. Die Funktion endet hier – Code danach wird nicht mehr ausgeführt.
x = funktion()
Der zurückgegebene Wert landet in der Variable x. Genau wie bei x = len(liste).
+= – eine praktische Abkürzung
In Folge 5 schrieben wir versuche = versuche + 1. Das geht kürzer: versuche += 1 bedeutet genau dasselbe. Das += findest du auch in ratespiel_v3 unten.
💡 Merke dir

return ist der Rückgabewert einer Funktion. Ohne return gibt eine Funktion nichts zurück – sie macht einfach etwas (z. B. drucken). Mit return gibt sie ein Ergebnis zurück, das du weiterverwenden kannst.

🧠 Schnell-Check: Was gibt print(quadrat(4)) aus, wenn def quadrat(z): return z * z?

🧪 Mach es an deinem Pi

Tippe quadrat.py ab. Schreibe dann eine Funktion verdopple(zahl), die zahl * 2 zurückgibt (nicht druckt). Gib dann verdopple(verdopple(3)) aus – was kommt raus?

Station 3 geschafft!
4

Projekt: ratespiel_v3.py

Du lernst: Ein bekanntes Programm mit Funktionen ordentlich aufteilen.

Du hast das Ratespiel schon zweimal geschrieben: ratespiel_v1.py (Folge 5) und ratespiel_v2.py mit Highscore (Folge 7). Jetzt zerlegen wir es in Funktionen – jeder Teil bekommt einen Namen und eine klare Aufgabe.

🧪 Kopiere zuerst ratespiel_v2.py

Öffne ein Terminal und wechsle in ~/Forscherheft/ratespiel. Kopiere mit:

Terminal
cp ratespiel_v2.py ratespiel_v3.py

Jetzt öffne ratespiel_v3.py in Thonny und ersetze den gesamten Inhalt durch den Code unten.

ratespiel_v3.py (in ~/Forscherheft/ratespiel/)
import random def lade_highscore(): try: with open("highscore.txt", "r") as f: return int(f.read()) except: return 999 def speichere_highscore(score): with open("highscore.txt", "w") as f: f.write(str(score)) def rate_eine_runde(): geheimzahl = random.randint(1, 20) versuche = 0 print("Ich denke an eine Zahl zwischen 1 und 20!") while True: tipp = int(input("Dein Tipp: ")) versuche += 1 if tipp == geheimzahl: print("Richtig! 🎉 " + str(versuche) + " Versuche.") return versuche elif tipp < geheimzahl: print("Höher!") else: print("Niedriger!") highscore = lade_highscore() print("Aktueller Highscore: " + str(highscore) + " Versuche") ergebnis = rate_eine_runde() if ergebnis < highscore: speichere_highscore(ergebnis) print("Neuer Highscore! 🏆") else: print("Highscore bleibt: " + str(highscore) + " Versuche")
1
lade_highscore() – liest die Datei und gibt eine Zahl zurück. Wenn die Datei fehlt, gibt sie 999 zurück. Benutzt return an zwei Stellen!
2
speichere_highscore(score) – nimmt eine Zahl als Parameter und schreibt sie in die Datei. Gibt nichts zurück.
3
rate_eine_runde() – die ganze Spiellogik in einer Funktion. while True: läuft endlos, bis die richtige Zahl erraten wird – dann beendet return versuche die Funktion.
4
Die letzten vier Zeilen sind das „Hauptprogramm" – sie rufen die drei Funktionen auf und verbinden die Ergebnisse. Kurz, klar, leicht zu lesen.
💡 Merke dir: while True + return

while True: läuft theoretisch für immer. Aber innerhalb einer Funktion beendet return nicht nur die Schleife, sondern die ganze Funktion – und gibt gleichzeitig einen Wert zurück. Das ist ein sehr häufiges Muster in Python.

🕹️ ratespiel_v3 live ausprobieren!

Hier kannst du das fertige Spiel testen – genau wie auf deinem Pi. Tippe eine Zahl und drück ⏎.

🎯 Mission: Gewinn in höchstens 5 Versuchen!

  • Eine Runde erfolgreich beenden
Terminal — ratespiel_v3.py
Tipp:
Station 4 geschafft!
📚

Glossar – neue Wörter aus Folge 10

Diese Begriffe kommen zu deinem Wissen aus den vorherigen Folgen dazu.

Funktion
Ein benannter, wiederverwendbarer Code-Block. Erstellt mit def, aufgerufen mit name().
def
Das Schlüsselwort zum Erstellen einer Funktion. Nach def folgt der Name, dann Klammern und ein Doppelpunkt.
Parameter
Eine Variable in den Klammern von def. Sie bekommt ihren Wert erst beim Aufruf der Funktion.
Argument
Der konkrete Wert, den du beim Aufruf übergibst. In hallo("Max") ist "Max" das Argument.
return
Gibt einen Wert aus der Funktion zurück und beendet sie. Ohne return gibt eine Funktion nichts zurück.
Rückgabewert
Der Wert, den eine Funktion nach return zurückliefert. Kann in einer Variable gespeichert oder direkt verwendet werden.
+=
Kurzschreibweise für variable = variable + 1. versuche += 1 erhöht versuche um 1.
🎒

Das hast du in Folge 10 gelernt

Ein Rückblick auf Funktionen – und auf das ganze Forscherheft.

Du hast jetzt alle wichtigen Python-Grundlagen in der Hand. Was du kannst:

  • def: eigene Funktionen schreiben und aufrufen.
  • Parameter: Daten in eine Funktion hineingeben.
  • return: Ergebnisse aus einer Funktion zurückbekommen.
  • +=: Variablen kürzer hochzählen.
  • … und du hast dein Ratespiel zum dritten Mal verbessert – sauberer als je zuvor! 🏆
💡 Was du in 10 Folgen gelernt hast

Variables, Strings, Zahlen, if/elif/else, while, for, Listen, Dictionaries, Dateien, Funktionen – das sind die Grundbausteine fast aller Programme. Du hast sie alle kennen gelernt!

Rückblick gelesen!

Bonus-Quiz

Freiwillig! Teste, wie viel du dir aus Folge 10 gemerkt hast.

⭐ Optional

Diese Fragen sind freiwillig – du kannst auch direkt weitergehen. Kein Druck!

🧠 Was ist der Unterschied zwischen Parameter und Argument?

🧠 Was ist der Wert von x nach x = 5, gefolgt von x += 3?

🧠 Eine Funktion hat kein return. Was gibt ergebnis = meine_funktion() in ergebnis zurück?

🚀

Was kommt als Nächstes?

Ein Blick auf Folge 11.

Du hast in zehn Folgen die wichtigsten Python-Grundlagen gelernt. Gut gemacht – das ist schon weit mehr, als die meisten Erwachsenen können! 🎉

Bevor es zu Webseiten oder Hardware-Projekten geht, gibt es noch ein spannendes Thema: Dein Computer kennt nur 0 und 1. Aber wie kann er damit Texte schreiben, Fotos zeigen und Musik abspielen?

Genau das erklärt Folge 11: das Binärsystem, Bits und Bytes, wie Buchstaben als Zahlen gespeichert werden (ASCII) – und warum ein Bild eigentlich eine riesige Zahlentabelle ist.

Start