Python / input() / Benutzereingaben in einer Variablen verwenden

Pythons input() liest eine Zeile von der Standardeingabe und liefert eine Zeichenkette. Mit name = input() binden Sie sie an eine Variable. Auch eingegebene Zahlen benötigen vor Berechnungen eine Umwandlung mit int() oder float(). Der abschließende Zeilenumbruch wird entfernt, anderer Leerraum bleibt erhalten.

Eine Zeile lesen und verwenden

Die Beispiele benötigen nur Python 3 und wurden unter Python 3.12.14 mit bereitgestellter Standardeingabe geprüft. Speichern Sie jeweils den vollständigen Code als UTF-8 in input_demo.py und starten Sie im Terminal python input_demo.py, gegebenenfalls mit python3. Ersetzen Sie den Dateiinhalt für jedes unabhängige Beispiel.

Geben Sie nach dem Start JB ein und drücken Sie Enter. Ohne Eingabeaufforderung wartet das Programm zunächst ohne sichtbare Ausgabe.

name = input()
print(f"Hello, {name}!")
print(type(name).__name__)

Diese und die folgenden Ergebnisblöcke zeigen nur die Programmausgabe, nicht das Echo der eingetippten Zeichen im Terminal.

Hello, JB!
str

Mit dem optionalen prompt aus der input()-Dokumentation zeigt etwa input("Name: ") einen Hinweis an. Dieser gehört nicht zum Rückgabewert. Standardeingaben können auch aus Dateien oder anderen Programmen stammen.

Zahlentext vor dem Rechnen umwandeln

Geben Sie zuerst 0012, dann in einer zweiten Zeile 1.25 ein. Die zwei Aufrufe lesen jeweils eine eigene Zeile.

text = input()
print(repr(text))
print(text + "1")
number = int(text)
print(number + 1)
price = float(input())
print(price * 2)
'0012'
00121
13
2.5

repr() zeigt die Zeichenkette mit Anführungszeichen. Das Anhängen von "1" ergibt 00121; nach int-Umwandlung ergibt die Addition von 1 dagegen 13. Führende Nullen gehen bei der Umwandlung verloren. Postleitzahlen oder Produktkennungen bleiben deshalb Text, wenn die Schreibweise wichtig ist.

int("1.25") und int("hello") erzeugen ValueError. Für geeignete Dezimaleingaben verwenden Sie float; hier dient ein Punkt als Dezimalzeichen. Währungszeichen und Gruppierungskommas werden nicht automatisch bereinigt. Für exakte dezimale Geldberechnungen müssen Sie außerdem die Grenzen binärer Gleitkommazahlen berücksichtigen.

Ungültige Eingaben erneut abfragen

Umwandelbarkeit und zulässiger Wertebereich sind getrennte Bedingungen. Dieses Beispiel verlangt ein nichtnegatives Alter. Geben Sie nacheinander hello, -1 und 20 ein, jeweils mit Enter:

while True:
    try:
        text = input()
    except EOFError:
        print("Input ended.")
        break
    try:
        age = int(text)
    except ValueError:
        print("Enter a whole number.")
        continue
    if age < 0:
        print("Enter 0 or greater.")
        continue
    print(f"Accepted: {age}")
    break
Enter a whole number.
Enter 0 or greater.
Accepted: 20

ValueError behandelt ungültigen Zahlentext, die zusätzliche Bedingung lehnt negative Ganzzahlen ab. Auch eine Leerzeile scheitert an der Umwandlung. Bei Erfolg beendet break die Schleife. Fangen Sie gemäß der Ausnahmebehandlung gezielt erwartete Fehler ab. Bei EOF endet die Schleife, statt endlos neue Eingaben anzufordern.

Leerraum und leere Zeilen unterscheiden

Geben Sie zunächst zwei Leerzeichen, JB und zwei Leerzeichen ein. Drücken Sie in der nächsten Zeile nur Enter.

text = input()
print(repr(text))
print(repr(text.strip()))
empty = input()
print(repr(empty))
print(empty == "")
'  JB  '
'JB'
''
True

Die umgebenden Leerzeichen bleiben erhalten. str.strip() liefert eine neue Zeichenkette ohne äußeren Leerraum und verändert das Original nicht. Verwenden Sie es nicht pauschal, wenn Leerzeichen Bedeutung haben. Eine leere Zeile ergibt "", nicht None. Legen Sie ausdrücklich fest, ob eine reine Leerraumzeile ebenfalls als leer gelten soll.

Zwei Werte aus einer Zeile lesen

Teilen Sie den Text auf und wandeln Sie beide Teile um. Geben Sie für dieses Beispiel 10 20 in einer Zeile ein:

parts = input().split()
if len(parts) != 2:
    print("Enter exactly two integers.")
else:
    try:
        left, right = map(int, parts)
    except ValueError:
        print("Use whole numbers.")
    else:
        print(left + right)
30

split() ohne Trennargument fasst aufeinanderfolgenden Leerraum zusammen. Erst wird auf genau zwei Teile geprüft, dann reicht map jeden Teil an int weiter. Nur 10 oder drei Werte lösen den Mengenhinweis aus, 10 hello den Ganzzahlhinweis. Das Beispiel endet nach einer ungültigen Eingabe; für Wiederholungen ist eine Schleife wie zuvor erforderlich.

EOFError und ungeeignete Ausgabefenster

EOF bedeutet End of File, also das Ende des Eingabestroms. Kann input() keine Daten mehr lesen, erzeugt es EOFError statt einer leeren Zeile. Der Code versucht zwei Lesevorgänge. Ein Eingabestrom mit genau einem Zeilenumbruch ergibt:

for index in range(2):
    try:
        text = input()
    except EOFError:
        print("EOF")
        break
    print(repr(text))
''
EOF

Zuerst wird eine leere Zeichenkette gelesen, danach EOF erreicht. Im interaktiven Terminal drücken Sie zunächst Enter und senden beim nächsten Lesen das Eingabeende. Unter Windows ist dies häufig Ctrl+Z und Enter, unter macOS/Linux Ctrl+D auf einer leeren Eingabezeile. Terminal und IDE können diese Tasten anders behandeln.

Unterstützt das Ausgabefenster Ihrer IDE keine Eingabe, verwenden Sie ein Terminal oder eine geeignete Konsole. Prüfen Sie bei Dateien und Online-Aufgaben, ob genügend Eingabezeilen vorhanden sind. Warten auf Eingaben und EOF sind verschiedene Zustände. Für die Umwandlung von Benutzereingaben ist keine Ausführung mit eval() erforderlich.