Aussehen
Projekte
Bis hierher hast du Aufgaben gelöst. Bei einer Aufgabe steht vorher fest, was herauskommen soll, und jemand anderes weiß die Antwort schon. Ein Projekt ist anders: Du suchst dir aus, was entstehen soll, und niemand kann dir vorher sagen, ob es klappt.
Genau deshalb lernt man dabei am meisten. Und genau deshalb ist die häufigste Ursache für gescheiterte Projekte nicht mangelndes Können, sondern ein zu großes Ziel.
Die Schlangen
Jedes Projekt auf den folgenden Seiten trägt eine Angabe, wie schwer es ist:
| Bedeutung | |
|---|---|
| 🐍 | Einfach. Du kommst mit dem weiter, was du aus den bisherigen Kapiteln kennst. |
| 🐍🐍 | Mittel. Du musst dir ein neues Werkzeug erschließen, meist ein zusätzliches Modul. |
| 🐍🐍🐍 | Schwer. Mehrere neue Sachen auf einmal, und du wirst englische Dokumentation lesen. |
Die Schlangen sagen nichts darüber, wie gut ein Projekt wird. Ein sorgfältig gebautes Spiel mit einer Schlange ist mehr wert als eine halbfertige Bilderkennung mit dreien.
Die Projekte
| Projekt | Was dabei entsteht | |
|---|---|---|
| Ein Spiel bauen | Ein Spiel mit Grafik, Steuerung und Spielende | 🐍 |
| Daten abrufen | Ein Programm, das sich Daten aus dem Netz holt | 🐍🐍 |
| Eine Webseite mit Python | Eine eigene Seite mit Datenbank dahinter | 🐍🐍 |
| Daten ohne API auslesen | Ein Programm, das eine Webseite ausliest | 🐍🐍🐍 |
| Künstliche Intelligenz | Ein trainiertes Modell oder ein Spiel mit Sprachmodell | 🐍🐍🐍 |
Module installieren
Fast jedes Projekt braucht Code, den jemand anderes geschrieben hat. Solche Sammlungen heißen Module und liegen in einem großen Verzeichnis, dem Python Package Index.
Modul
Ein Modul ist fertiger Code von jemand anderem. import holt ihn in dein Programm. Manche Module — random, math — sind schon dabei, die meisten musst du erst installieren.
Installiert wird in der Konsole, mit einer Zeile. Fang mit requests an — dem Modul, mit dem Python Daten aus dem Netz holt:
pip install requestsIn Thonny geht es auch ohne Konsole: Werkzeuge → Verwalte Pakete, dann den Namen suchen und installieren.
Gleich ausprobieren: das Bild des Tages
Auf der Startseite von Bing liegt jeden Tag ein anderes Foto. Welches es heute ist, verrät der Server auch einem Programm, das danach fragt — ohne Anmeldung und ohne Schlüssel:
python
import requests
url = "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE"
# Der Server schickt eine Liste von Bildern; an Stelle 0 steht das von heute.
image = requests.get(url).json()["images"][0]
print(image["title"])
print("https://www.bing.com" + image["url"])Sieben Zeilen, und in der Konsole stehen der Titel des heutigen Bildes und seine Adresse. Kopier die Adresse in deinen Browser — dort liegt das Foto in voller Größe.
Herunterladen kannst du es auch gleich selbst. .content liefert die Datei als rohe Bytes, und "wb" heißt „schreiben, binär" — ein Bild ist eben kein Text:
python
data = requests.get("https://www.bing.com" + image["url"]).content
open("bild-des-tages.jpg", "wb").write(data)Probier es aus
- Installiere
requestsund führ die ersten sieben Zeilen aus. In der Konsole muss ein deutscher Bildtitel erscheinen. - Ändere
mkt=de-DEinmkt=en-US. Was passiert mit dem Titel? - Ändere
idx=0inidx=1. Welches Bild bekommst du jetzt? - Häng die beiden Zeilen zum Herunterladen an. Neben deinem Programm muss eine Datei
bild-des-tages.jpgauftauchen. - Gib auch
image["copyright"]aus — dort steht, wer das Foto gemacht hat.
Diese Schnittstelle ist inoffiziell
Microsoft hat diese Adresse nie als Schnittstelle veröffentlicht. Sie funktioniert seit Jahren, aber versprochen hat das niemand: Sie kann morgen anders heißen, andere Felder liefern oder verschwinden. Wenn dein Programm plötzlich einen Fehler wirft, liegt es also nicht zwangsläufig an dir.
Warum es einen Unterschied macht, ob eine Quelle etwas zusagt oder nicht, steht bei Daten ohne API auslesen.
Was dabei zurückkam — diese verschachtelten Klammern —, heißt JSON, und richtig los geht es damit bei Daten abrufen.
Schlüssel gehören nicht ins Programm
Manche Projekte brauchen einen Zugangsschlüssel. Ein solcher Schlüssel ist wie ein Passwort: Wer ihn hat, handelt in deinem Namen — und bei kostenpflichtigen Diensten auf deine Rechnung.
Schreib ihn deshalb nie in Code, den du weitergibst, und lade ihn niemals in ein Repository hoch. Wie man es richtig macht, steht bei Daten abrufen.
Wenn es klemmt
Eine Fehlermeldung ist keine Beleidigung, sondern die genaueste Auskunft, die du bekommen kannst. Lies sie von unten nach oben: In der letzten Zeile steht, was schiefging, darüber, in welcher Zeile deines Programms.
Die drei häufigsten:
ModuleNotFoundError— das Modul ist nicht installiert, oder du hast dich vertippt.NameError— der Name existiert nicht. Tippfehler, oder die Zeile, die ihn anlegt, kommt später.IndentationError— die Einrückung passt nicht. Meistens Leerzeichen und Tabulatoren gemischt.
Und wenn gar nichts hilft: Bau das Problem so klein nach, dass nur noch fünf Zeilen übrig sind. Oft findest du den Fehler schon dabei.