Abschnitt 2 · Lektion 6
Eingaben
Wenn die Werte fest im Code stehen, tut ein Programm bei jedem Lauf dasselbe. Für ein anderes
Ergebnis musst du den Code ändern. Mit input kann das Programm stattdessen fragen.
input stellt eine Frage
Mia name = input("Wie heißt du? ")
print(f"Hallo {name}!") input("Wie heißt du? ") tut zwei Dinge. Es gibt die Frage aus, ohne Zeilenumbruch danach. Dann
wartet es, bis eine Zeile Antwort kommt, und gibt diese Antwort zurück. Mit name = davor bekommt
die Antwort einen Namen. Ab da ist sie ein Wert wie jeder andere.
Auf deinem eigenen Rechner steht dann die Frage da, und der Cursor blinkt dahinter. Du tippst Mia
und drückst Enter. Erst dann geht es weiter.
Woher die Antwort hier kommt
Auf der Maschine, auf der dein Code in diesem Kurs läuft, sitzt niemand an einer Tastatur. Deshalb
kommen die Antworten aus einer Datei. Sie heißt eingabe.txt und hat eine Zeile je Frage. Im
Beispiel steht darin nur Mia.
Gestartet wird dein Programm dann mit python main.py < eingabe.txt. Das < gehört zur
Kommandozeile und nicht zu Python. Damit wird der Inhalt der Datei in das Programm geschickt, als
hätte ihn jemand getippt. Dein Programm merkt keinen Unterschied. Es stellt seine Frage, liest eine
Zeile und macht weiter.
Im Terminal steht deshalb Wie heißt du? Mia, mit der Antwort direkt hinter der Frage. Die Antwort
wird dort mit hingeschrieben, damit die Ausgabe so aussieht wie an einem echten Rechner, an dem du
sie selbst getippt hättest. Sonst stünde da die Frage und gleich danach Hallo Mia!, und niemand
wüsste, woher die Mia kommt.
Wenn du einen anderen Namen in eingabe.txt schreibst, wird beim nächsten Lauf jemand anderes
gegrüßt. Die Datei ist zum Ausprobieren da. Beim Prüfen einer Aufgabe zählt sowieso nicht, was du
hineingeschrieben hast, sondern welche Antworten die Aufgabe vorsieht.
Das Leerzeichen am Ende
Mia name = input("Wie heißt du?")
print(f"Hallo {name}!") Ein kleines Detail macht hier viel aus. input gibt die Frage genau so aus, wie sie dasteht. Ohne
Leerzeichen am Ende klebt die Antwort an der Frage, Wie heißt du?Mia. Deshalb endet jede Frage in
diesem Kurs mit einem Leerzeichen, und in eigenem Code ist es dort genauso gut aufgehoben.
Die Antwort ist immer Text
3 anzahl = input("Wie viele Brötchen? ")
print(anzahl * 2)
print(int(anzahl) * 2) Die Antwort ist eine 3, und anzahl * 2 gibt trotzdem 33 aus. input liefert immer Text,
auch wenn jemand eine Zahl eintippt. Und Text mal zwei ist eben derselbe Text zweimal
hintereinander. Erst nach int(anzahl) wird gerechnet, und heraus kommen die erwarteten 6
Brötchen.
Weil man das fast jedes Mal braucht, schreibt man beides meistens in eine Zeile:
anzahl = int(input("Wie viele Brötchen? ")). Gelesen wird von innen nach außen. Erst wird gefragt,
dann wird die Antwort in eine ganze Zahl verwandelt, und das Ergebnis heißt anzahl. Für
Kommazahlen steht dort float statt int.
Was passiert, wenn jemand auf die Frage nach einer Zahl drei antwortet, kennst du auch schon. Es
gibt einen ValueError. Wie man damit umgeht, ohne dass das Programm abstürzt, kommt in Abschnitt 9.
Wenn eine Antwort fehlt
Mia name = input("Wie heißt du? ")
jahr = input("Geburtsjahr? ")
print(name, jahr) Das Programm stellt zwei Fragen, aber in eingabe.txt steht nur eine Zeile. Die erste Frage bekommt
ihre Mia. Bei der zweiten ist die Datei zu Ende, und Python meldet
EOFError: EOF when reading a line. EOF heißt end of file, also Ende der Datei. Es sollte noch eine
Zeile gelesen werden, aber da war keine mehr.
Darunter steht ein deutscher Satz, der nicht von Python kommt, sondern von dieser Plattform: Hier
gibt es keine Tastatur, und die Antworten gehören in eine Datei. Auf deinem eigenen Rechner siehst
du diesen Fehler praktisch nie, weil dort jemand tippt. Hier heißt er fast immer, dass in
eingabe.txt eine Zeile fehlt.
Zum Mitnehmen
Was input() zurückgibt, ist immer Text, für Zahlen kommt int() oder float() drumherum. Fehlt in eingabe.txt eine Zeile, endet das Programm mit einem EOFError.
Jetzt du
Basis Konto, kostenlosZu dieser Lektion gehört eine Aufgabe. Du schreibst den Code selbst, und nach jedem Lauf sagt dir eine Prüfliste, was schon stimmt.
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.
-
Aufgabe, dein Code läuft auf einem Server
Öffnet sich mit dem Basis Konto.