Abschnitt 1 · Lektion 5
Wie ein Lauf hier funktioniert
Der erste Lauf in einer Lektion dauert spürbar länger als die folgenden. Und eine Datei, die dein Programm angelegt hat, ist nach einer Pause wieder weg. Wer das nicht weiß, sucht den Fehler irgendwann im eigenen Code, und das wäre schade um die Zeit.
Was beim Klick passiert
Dein Code läuft nicht in deinem Browser. Er läuft auf einer echten Maschine in einem Rechenzentrum, mit einem echten Python darauf. Vor deinem ersten Klick gibt es diese Maschine noch gar nicht.
Beim ersten Lauf in einer Lektion wird sie gestartet. Danach läuft dein Programm darauf genau so,
wie es auf jedem anderen Rechner laufen würde: python main.py, und heraus kommt, was das Programm
ausgibt. Deshalb dauert der erste Lauf länger. Da hängt nichts, die Maschine fährt nur hoch.
Wenn du eine Weile nichts machst oder die Lektion verlässt, verschwindet sie wieder, samt allen Dateien, die dein Programm dort angelegt hat. Was eine Aufgabe braucht, bringt sie selbst mit.
import platform
print("Python-Version:", platform.python_version())
print("Minuten pro Tag:", 24 * 60) Im Terminal stehen zwei Zeilen, die Python-Version der Maschine und das Ergebnis einer Rechnung. Die
erste Zeile im Code, import platform, holt ein Stück Werkzeug dazu, das die Version kennt. Was
import genau macht, kommt in Abschnitt 10.
Die Flächen, mit denen du arbeitest
Drei Orte, jeder für eine andere Frage.
In der Prüfliste im Reiter Praxis siehst du, ob es zählt. Jeder Punkt darauf ist eine Behauptung über dein Programm. Nach jedem Prüfen steht daneben, ob sie gestimmt hat.
Im Terminal siehst du, was passiert ist. Dort steht der Befehl, der gelaufen ist, darunter alles, was dein Programm ausgegeben hat, und in Rot, was Python dazu zu sagen hatte.
print("Bis hierhin läuft alles.")
print(10 / 0)
print("Diese Zeile kommt nicht mehr.") Die erste Zeile steht da, die dritte nicht, und dazwischen die Meldung
ZeroDivisionError: division by zero. Durch null teilen kann auch Python nicht. Hier siehst du noch
einmal die zwei Kanäle aus Lektion 1.4. Die Ausgabe des Programms bleibt sauber, und die rote
Meldung steht getrennt darunter.
Der dritte Ort ist der Reiter Debug. Dort geht es um die häufigste Frage beim Programmieren. Was stand in diesem Moment eigentlich wo drin?
summe = 0
for minuten in [25, 40, 15]:
summe = summe + minuten
print("Zusammen:", summe, "Minuten") Mit einem Klick auf Aufzeichnen im Reiter Debug läuft das Beispiel noch einmal. Diesmal wird bei jeder Zeile mitgeschrieben, was gerade in den Namen stand. Danach kannst du durch die Liste der Schritte blättern, und der Editor springt mit.
Das Programm muss man dafür noch nicht verstehen. Interessant ist nur summe. Sie fängt bei 0 an,
wird zu 25, dann 65, dann 80, und jeder dieser Schritte steht einzeln in der Liste. Die Werte
stehen dort so, wie Python sie schreibt. Später also zum Beispiel True und None oder Text in
einfachen Anführungszeichen. Aufgezeichnet wird immer die Datei, die im Editor gerade vorn liegt.
Und eine Aufzeichnung ist ein eigener Lauf, der genauso zählt wie jeder andere.
Ab Abschnitt 4 kommt der Reiter regelmäßig vor, und in Lektion 9.5 wird mit ihm ein Fehler gesucht.
Neben Debug liegen drei weitere Reiter: Browser, Console und Netzwerk. Die gehören zu Webseiten, und eine eigene Webseite kommt in diesem Kurs erst in Abschnitt 18. Bis dahin bleiben sie leer. Kaputt ist da nichts.
Grenzen der Maschine
Ein Lauf hat ein Zeitlimit. Über den Button Prüfen darf ein Lauf zehn Sekunden dauern, ein Befehl, den du im Terminal tippst, dreißig. Was länger braucht, wird beendet, und im Terminal steht dann, dass das Zeitlimit zugeschlagen hat. Kein Programm in diesem Kurs braucht auch nur annähernd so lange. Wenn eins an die Grenze stößt, hört es fast immer aus Versehen nie auf. Das passiert dir spätestens in Abschnitt 4 einmal.
Und es gibt kein Netz.
import socket
print("Wo wohnt example.com?")
print(socket.gethostbyname("example.com")) Das Programm will nur wissen, wo die Seite example.com zu finden ist, und schon das scheitert. Die
letzte Zeile der Meldung fängt mit socket.gaierror an. Übersetzt heißt das, der Name ließ sich
nicht nachschlagen. Die Maschine hat keine Verbindung nach draußen, in keine Richtung.
Das ist Absicht, aus zwei Gründen. Auf der Maschine läuft fremder Code, nämlich deiner, und ohne Netz kann ein Programm nichts anrichten, was über die Maschine hinausgeht. Außerdem wäre eine Aufgabe, die von einer Seite im Internet abhängt, morgen vielleicht kaputt, weil sich woanders etwas geändert hat. Wenn in Abschnitt 17 Daten aus dem Netz geholt werden, bringt die Aufgabe den Server deshalb gleich mit.
Warum nichts von selbst läuft
Jeder Lauf kostet Rechenzeit in einem Rechenzentrum. Die zählt auf ein Kontingent, das jeden Nutzungsmonat neu beginnt: 1 Stunde mit dem Basis Konto, 60 Stunden mit dem Premium Konto. Lesen, die Beispiele im Editor ansehen und die Abschnittstests kosten nichts davon. Wie viel übrig ist, siehst du in jeder Lektion mit Sandbox und in deinem Konto unter „Nutzungsmonat“. Ist es aufgebraucht, geht es mit dem Premium Konto sofort weiter, sonst im nächsten Nutzungsmonat.
Gelaufen wird deshalb nur, wenn du es auslöst: mit Prüfen, mit Sandbox starten, mit Aufzeichnen im Reiter Debug, mit Live oder mit einem Befehl im Terminal. Nach Sandbox starten bleibt die Maschine stehen, solange du an ihr arbeitest, und wenn du eine Weile nichts tust, wird sie von selbst beendet. Mit dem Premium Konto startet außerdem schon der erste Tastendruck einer Lektion die Maschine und fährt das Programm einmal, damit der erste Lauf nicht auf den Start warten muss.
Praktisch lohnt sich deshalb eine Gewohnheit, die man beim Taschenrechner nicht braucht. Man liest
den Code einmal durch, bevor man drückt. Und wer wissen will, was in einem Wert steht, gibt ihn mit
print aus oder zeichnet den Lauf auf, statt zu raten und noch einmal zu starten.
Was ein grüner Haken behauptet
Ein grüner Punkt in der Prüfliste heißt, dass diese eine Behauptung für diesen einen Lauf gestimmt hat. Mehr nicht. Er heißt nicht, dass dein Code schön ist, und auch nicht, dass er in jedem denkbaren Fall funktioniert.
Geprüft wird meistens das Ergebnis. Manchmal verlangt eine Aufgabe ein bestimmtes Werkzeug, etwa
Decimal statt einer Kommazahl. Dann wird auch in deinen Code geschaut, und in der Prüfliste steht,
wonach gesucht wird. Eine Lösung, die du Zeichen für Zeichen treffen musst, gibt es nirgends. Wenn
dein Weg das verlangte Ergebnis liefert, ist er richtig, auch wenn er ganz anders aussieht als die
Musterlösung.
Und wo es nichts ehrlich zu prüfen gibt, steht auch keine Aufgabe. Diese Lektion ist so eine.
Zum Mitnehmen
Dein Programm läuft nur, wenn du es startest, auf einer eigenen Maschine ohne Netz und je Prüflauf höchstens zehn Sekunden. Ob es zählt, steht in der Prüfliste, was passiert ist, im Terminal, und Zwischenwerte findest du in der Aufzeichnung im Reiter Debug.
Jetzt du
Basis Konto, kostenlosIm Editor änderst du die Beispiele dieser Lektion und lässt sie gleich laufen. So merkst du am schnellsten, ob es sitzt.
Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.
In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.
Was in dieser Lektion steckt
-
Artikel mit 4 Beispielen zum Ausprobieren
Steht hier, ohne Konto lesbar.