Die Python-Funktion input() blockiert die Programmausführung, liest eine Zeile von der Standardeingabe (stdin) und gibt den eingegebenen Text als String back — ohne den abschließenden Zeilenumbruch. Optional wird vor dem Lesen ein Prompt-Text auf stdout ausgegeben. input() ist das Standard-Werkzeug für interaktive Konsolenprogramme und einfache CLI-Tools.
Einleitung
input() macht aus einem Python-Skript ein interaktives Programm: Es wartet, bis die Nutzerin etwas eintippt und Enter drückt, und liefert die Eingabe dann als str. Wer Zahlen oder andere Typen braucht, muss explizit konvertieren (int(), float(), ...).
Wichtige Eigenschaften:
- Immer String: Auch wenn der Nutzer „42" eintippt, ist das Ergebnis
"42"als Zeichenkette. - Blockiert: Das Programm pausiert, bis Enter gedrückt wird.
- Prompt geht an
stdout: nicht anstderr. In Pipes, diestdoutumleiten, kann der Prompt dadurch verloren gehen — dann besserprint(..., file=sys.stderr)davor. - EOF: Wird
Ctrl+D(Linux/Mac) oderCtrl+Z(Windows) gedrückt, wirftinput()einenEOFError.
Für sensible Eingaben wie Passwörter ist getpass.getpass() die richtige Wahl — sie zeigt die Eingabe nicht an.
Syntax
input()
input(prompt)prompt (Optional) String, der vor der Eingabe-Aufforderung ausgegeben wird. Kein abschließendes Newline nötig.
Rückgabewert
Ein str mit der eingegebenen Zeile, ohne abschließendes \n. Bei EOF wird EOFError ausgelöst.
Beispiele
Einfache Eingabe
name = input("Wie heißt du? ")
print(f"Hallo, {name}!")Zahl einlesen
alter = int(input("Dein Alter: "))
print(f"In 10 Jahren bist du {alter + 10}.")Mehrere Werte aus einer Zeile
# Eingabe: "3.14 2.71 1.62"
values = [float(x) for x in input("Drei Zahlen: ").split()]
print(values)Praktische Beispiele
Eingabe mit Validierungs-Loop
def read_number(prompt, mindestwert=0):
while True:
raw = input(prompt).strip()
try:
n = int(raw)
except ValueError:
print("Bitte eine ganze Zahl eingeben.")
continue
if n < mindestwert:
print(f"Mindestens {mindestwert}.")
continue
return n
anzahl = read_number("Wie viele Items? ", mindestwert=1)Ja/Nein-Bestätigung
def yes_no(question):
answer = input(f"{question} [j/N] ").strip().lower()
return answer in ("j", "ja", "y", "yes")
if yes_no("Wirklich löschen?"):
print("Wird gelöscht.")
else:
print("Abgebrochen.")Passwort verdeckt einlesen
from getpass import getpass
# Im Gegensatz zu input() wird die Eingabe nicht angezeigt
pw = getpass("Passwort: ")
print(f"Eingegeben: {len(pw)} Zeichen")EOF und Ctrl+C abfangen
try:
text = input("Eingabe: ")
except EOFError:
print("Ende der Eingabe erreicht.")
except KeyboardInterrupt:
print("Vom Nutzer abgebrochen.")Praktische Hinweise
- Immer trim und validieren:
input().strip()entfernt führende/abschließende Whitespaces. - Konvertierung schlägt schnell fehl —
int(input(...))wirftValueErrorbei nicht-numerischen Eingaben. Mit try/except behandeln. print()zuvor verbraucht keine Newlines — der Prompt voninput()ist Bestandteil der gleichen Zeile.- Für komplexere CLIs:
argparse(Argumente),prompt_toolkit(Eingabe mit Editing/History),rich.prompt(hübsche Prompts). - In Tests lässt sich
input()permonkeypatch(pytest) oderunittest.mock.patch("builtins.input", ...)ersetzen.