Forscherheft · Folge 7

Dein Programm merkt sich etwas

Dein Ratespiel vergisst alles, wenn du es schließt. Das änderst du jetzt: Du lernst, wie Programme Daten in Dateien speichern – und gibst deinem Ratespiel einen echten Highscore!

🧭 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

RAM und Festspeicher

Du lernst: Warum Programme alles vergessen – und wie Dateien das ändern.

Wenn dein Ratespiel läuft, merkt es sich alles im RAM – dem Arbeitsspeicher. Das ist sehr schnell, aber es gibt einen Haken: Sobald du das Programm beendest, wird der RAM geleert. Alles weg!

RAM
Arbeitsspeicher – sehr schnell, aber nur solange das Programm läuft. Danach leer.
Festspeicher
SD-Karte deines Pi – bleibt dauerhaft, auch nach dem Ausschalten. Dateien landen hier.

Um Daten zu behalten, müssen sie auf den Festspeicher – also in eine Datei. Dateien bleiben auch dann erhalten, wenn der Pi ausgeschaltet wird.

💡 Merke dir

RAM ist wie ein Whiteboard – schnell beschreibbar, aber beim Verlassen wird alles weggewischt. Eine Datei ist wie ein Notizbuch – langsamer, aber du kannst jederzeit nachschlagen, was drin steht.

🧠 Schnell-Check: Warum vergisst dein Ratespiel seinen Highscore beim Beenden?

Station 1 geschafft!
2

Dateien anlegen

Du lernst: Dateien über den Dateimanager, das Terminal und Python zu erstellen.

Es gibt drei Wege, eine Datei anzulegen – du kennst das Muster schon aus Folge 2: erst der Klick-Weg, dann der Terminal-Weg.

🖱️ Der Klick-Weg: Dateimanager

🧪 Mach es an deinem Pi

Öffne den Dateimanager (das Ordner-Symbol in der Taskleiste). Navigiere zu ~/Forscherheft/dateien (lege den Ordner vorher im Terminal mit mkdir ~/Forscherheft/dateien an). Klick mit der rechten Maustaste in den leeren Bereich → „Neue Datei erstellen" → nenne sie notiz.txt. Öffne sie per Doppelklick, schreib etwas hinein, speicher und schließ sie wieder.

⌨️ Der Terminal-Weg

Terminal
pi@raspberrypi:~ $ cd ~/Forscherheft/dateien pi@raspberrypi:~/Forscherheft/dateien $ echo "Hallo Datei!" > test.txt pi@raspberrypi:~/Forscherheft/dateien $ cat test.txt Hallo Datei!

echo "..." > datei.txt schreibt den Text in eine Datei (und erstellt sie, falls sie noch nicht existiert). cat datei.txt zeigt den Inhalt an.

💡 Merke dir

Mit > überschreibst du eine Datei komplett. Mit >> hängst du etwas ans Ende an, ohne den vorhandenen Inhalt zu löschen.

🧠 Schnell-Check: Was macht cat datei.txt?

Station 2 geschafft!
3

Python liest und schreibt

Du lernst: Dateien mit Python öffnen, beschreiben und wieder lesen.

Jetzt kommt der Python-Weg. Mit open() kannst du eine Datei öffnen – zum Schreiben oder zum Lesen.

Drei Modi beim Öffnen einer Datei:
"w"write: Schreibmodus. Erstellt die Datei neu (oder überschreibt sie, wenn sie schon existiert).
"a"append: Anfügemodus. Hängt neuen Text ans Ende – löscht nichts.
"r"read: Lesemodus. Liest den Inhalt einer bestehenden Datei.

✍️ Eine Datei schreiben

schreiben.py
with open("nachricht.txt", "w") as datei: datei.write("Hallo aus Python!\n") print("Datei gespeichert!")

📖 Eine Datei lesen

lesen.py
with open("nachricht.txt", "r") as datei: inhalt = datei.read() print(inhalt)

Das Schlüsselwort with sorgt dafür, dass die Datei automatisch wieder geschlossen wird, wenn der eingerückte Block fertig ist – auch wenn ein Fehler passiert.

💡 Merke dir

Der Inhalt einer Datei ist immer Text. Wenn du eine Zahl speichern willst, musst du sie vorher mit str() in Text umwandeln. Beim Einlesen musst du sie dann wieder mit int() zurückwandeln.

Was macht str()?
str(42) wandelt die Zahl 42 in den Text "42" um. Das brauchst du immer dann, wenn du eine Zahl in eine Datei schreiben willst – denn datei.write() erwartet Text, keine Zahl.
Du siehst hier also das Gegenstück zu int() aus Folge 5: int() macht aus Text eine Zahl, str() macht aus einer Zahl Text.
🕹️ Probier es live aus: Datei schreiben & lesen

Tippe einen Text in die Eingabe und drück ⏎ – das Programm schreibt ihn in eine Datei und liest ihn gleich wieder zurück.

🎯 Mission: Datei schreiben und lesen

  • Schreib etwas in die Datei
  • Inhalt erfolgreich gelesen
Terminal — schreiben.py / lesen.py
Nachricht:
🧪 Mach es an deinem Pi

Öffne Thonny, tippe schreiben.py ab und speichere es in ~/Forscherheft/dateien. Starte es. Öffne dann den Dateimanager und suche die Datei nachricht.txt im gleichen Ordner – da ist sie! Tippe dann auch lesen.py ab und lass es laufen.

🧠 Schnell-Check: Warum braucht man str() beim Schreiben einer Zahl in eine Datei?

Station 3 geschafft!
4

Ratespiel mit Highscore

Du lernst: try/except für Fehler – und erweiterst dein Ratespiel um einen Highscore.

Erinnerst du dich an ratespiel_v1.py aus Folge 5? Jetzt machst du eine Kopie davon und baust ihr ein Gedächtnis ein – der Highscore bleibt jetzt dauerhaft gespeichert!

📋 Zuerst: die Kopie anlegen

Terminal
pi@raspberrypi:~ $ cd ~/Forscherheft/ratespiel pi@raspberrypi:~/Forscherheft/ratespiel $ cp ratespiel_v1.py ratespiel_v2.py

cp kopiert die Datei – das Original ratespiel_v1.py bleibt unangetastet als sichtbarer Fortschrittsbeleg. Du arbeitest nur an der Kopie ratespiel_v2.py.

🛡️ try/except – wenn etwas schiefgehen könnte

Beim ersten Start gibt es noch keine Highscore-Datei. Wenn Python versucht, eine nicht-existierende Datei zu lesen, gibt es einen Fehler. Mit try/except kannst du auf genau so einen Fall vorbereitet reagieren, statt das Programm abstürzen zu lassen:

try/except – Prinzip
try: with open("highscore.txt", "r") as f: highscore = int(f.read()) except: highscore = 999 # Noch kein Highscore – hohen Startwert setzen

Python versucht zuerst den try-Block. Falls dabei etwas schiefgeht (z. B. Datei nicht gefunden), springt es in den except-Block statt abzustürzen.

🏆 Das vollständige ratespiel_v2.py

ratespiel_v2.py
import random # Highscore laden (oder Startwert 999 setzen, wenn noch keine Datei da ist) try: with open("highscore.txt", "r") as f: highscore = int(f.read()) except: highscore = 999 geheimzahl = random.randint(1, 20) geraten = False versuche = 0 print("Ich denke an eine Zahl zwischen 1 und 20!") print("Aktueller Highscore: " + str(highscore) + " Versuche") while not geraten: tipp = int(input("Dein Tipp: ")) versuche = versuche + 1 if tipp == geheimzahl: print("Richtig! 🎉 Du hast " + str(versuche) + " Versuche gebraucht.") geraten = True elif tipp < geheimzahl: print("Höher!") else: print("Niedriger!") # Highscore speichern, wenn besser als vorher if versuche < highscore: highscore = versuche with open("highscore.txt", "w") as f: f.write(str(highscore)) print("Neuer Highscore! Gespeichert: " + str(highscore) + " Versuche 🏆") else: print("Highscore bleibt: " + str(highscore) + " Versuche")
🕹️ Probier das Highscore-Ratespiel live aus!

Der Highscore wird zwischen Runden gespeichert – schaffst du einen neuen? Tipp eine Zahl und drück ⏎.

🎯 Mission: Schlag den Highscore

  • Errate die Geheimzahl
  • Neuen Highscore erreicht
Terminal — ratespiel_v2.py
Dein Tipp:
🧪 Mach es an deinem Pi

Öffne ratespiel_v2.py in Thonny (du hast es vorhin mit cp erstellt). Ändere es so, dass es wie oben aussieht. Spiel ein paar Runden – der Highscore bleibt jetzt gespeichert, auch wenn du Thonny schließt und neu startest!

🧠 Schnell-Check: Was macht except?

Station 4 geschafft!
📚

Glossar – neue Wörter aus Folge 7

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

RAM
Arbeitsspeicher – sehr schnell, aber nur solange das Programm läuft. Beim Beenden wird er geleert.
Festspeicher
Dauerhafter Speicher (beim Pi die SD-Karte) – bleibt auch nach dem Ausschalten erhalten.
Datei
Eine benannte Sammlung von Daten auf dem Festspeicher, z. B. eine Textdatei oder ein Python-Skript.
open()
Öffnet eine Datei in Python. Der zweite Parameter gibt den Modus an: "r" (lesen), "w" (schreiben), "a" (anfügen).
"w" / "a" / "r"
Datei-Modi beim Öffnen: write (neu schreiben), append (anhängen), read (lesen).
with
Öffnet eine Datei sicher und schließt sie automatisch am Ende des Blocks.
try / except
Fehlerbehandlung: Python versucht den try-Block – tritt ein Fehler auf, springt es in den except-Block statt abzustürzen.
str()
Wandelt eine Zahl (oder andere Werte) in Text um – das Gegenstück zu int().
Kommentar (#)
Eine Zeile, die mit # beginnt, ignoriert Python komplett – sie dient nur als Erklärung für Leserinnen und Leser des Codes.
>> (Terminal)
Leitet die Ausgabe eines Befehls in eine Datei – und hängt sie ans Ende an, ohne den vorhandenen Inhalt zu löschen. Gegenstück zu >, das überschreibt.
🎒

Das hast du in Folge 7 gelernt

Ein kurzer Rückblick auf Dateien und Highscores.

Du hast heute gelernt, wie Programme Daten dauerhaft speichern. Du kennst jetzt …

  • … den Unterschied zwischen RAM (flüchtig) und Festspeicher (dauerhaft).
  • … wie man Dateien über GUI, Terminal und Python anlegt.
  • open() mit den Modi "w", "a" und "r".
  • try/except für eine sichere Fehlerbehandlung.
  • str() zum Umwandeln von Zahlen in Text.
  • … und dein Ratespiel hat jetzt einen echten Highscore! 🏆
💡 Merke dir

Mit Dateien kannst du Programme bauen, die sich an Dinge erinnern – genau das tun fast alle Apps und Spiele, die du kennst. Du benutzt diese Technik gerade selbst!

Rückblick gelesen!

Bonus-Quiz

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

⭐ Optional

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

🧠 Mit welchem Modus öffnest du eine Datei, um neuen Text ans Ende anzuhängen, ohne den alten zu löschen?

🧠 Was passiert, wenn du eine Datei mit Modus "w" öffnest, die schon existiert?

🧠 Wozu dient try/except?

🚀

Was kommt als Nächstes?

Ein Blick auf Folge 8.

Du hast jetzt schon eine ganze Menge gelernt: Hardware verstehen, den Pi bedienen, mit Scratch und Python programmieren – und dein Programm kann sich sogar Dinge merken. Bevor es in Folge 9 tiefer in Python geht, machen wir in Folge 8 eine spannende Pause.

Weißt du eigentlich, wie es überhaupt zu einem Computer wie deinem Pi kam? In Folge 8 reisen wir durch die Geschichte des Computers – von Zimmergröße bis Postkartengröße – und lernen, was im Internet wirklich passiert, wenn du eine Webseite aufrufst.

Bis dahin: Spiel ein paar Runden deines Ratespiels und versuch, deinen eigenen Highscore zu schlagen! 🏆

Start