Python-Kurs / Mit Variablen, input und print eine Ausgabe erfassen
In Python verweisen Variablen auf Werte; input() liest Text ein und print() gibt Ergebnisse aus. Auch eine Eingabe, die wie eine Zahl aussieht, bleibt zunächst eine Zeichenkette und muss für Zahlenoperationen passend umgewandelt werden.
Zuweisungen und Kommentare unterscheiden
Der Operator = weist einem Namen das Ergebnis auf seiner rechten Seite zu. Er prüft nicht, ob zwei Ausdrücke mathematisch gleich sind. Wenn Sie demselben Namen einen neuen Wert zuweisen, verwenden spätere Ausdrücke diesen neuen Wert.
Speichern Sie dieses vollständige kleine Beispiel als assignment.py und führen Sie es im Projektterminal mit python assignment.py aus:
amount = 3500
amount = amount + 500
print(amount) # Display the calculated result
Die Ausgabe lautet 4000. Zuerst erhält amount den Wert 3500. Danach wird rechts der bisherige Wert plus 500 berechnet und das Ergebnis wieder dem Namen zugeordnet. Der englische Kommentar hinter # erläutert die Ausgabe; er selbst wird nicht ausgeführt.
Wählen Sie Namen wie amount oder expense, die eine Rolle erkennen lassen. Überschreiben Sie nicht versehentlich eingebaute Namen wie print, input oder list. Kommentare sollten Gründe, Einheiten oder Einschränkungen erklären, statt nur die unmittelbar sichtbare Anweisung zu wiederholen.
Ein vollständiges Programm mit zwei Eingaben ausführen
Erstellen Sie input_expense.py im Übungsordner und speichern Sie die Datei als UTF-8. Das Programm benötigt nur die Python-Standardbibliothek. Übernehmen Sie den gesamten Inhalt:
name = input("name: ").strip()
amount_text = input("amount: ").strip()
amount = int(amount_text)
print(f"{name}: {amount:,} KRW")
Starten Sie im Terminal der ausgewählten Projektumgebung python input_expense.py. Unter macOS oder Ubuntu verwenden Sie außerhalb einer aktivierten Umgebung gegebenenfalls python3 oder ausdrücklich den Pfad zum Projektinterpreter. Geben Sie bei name: den Text lunch und bei amount: die Ziffern 8000 ein; bestätigen Sie jeweils mit der Eingabetaste.
Die reine Standardausgabe des Programms, ohne die von Ihnen eingetippten Zeichen, lautet:
name: amount: lunch: 8,000 KRW
Im interaktiven Terminal stehen die Eingaben normalerweise zusätzlich auf dem Bildschirm. Sie sehen daher sinngemäß die Aufforderung name: lunch, danach amount: 8000 und schließlich die Ergebniszeile lunch: 8,000 KRW. Der Ausgabe-Block oben ist keine vollständige Abschrift dieser interaktiven Anzeige: input druckt seine Aufforderung ohne abschließenden Zeilenumbruch.
Die englischen Aufforderungen gehören zum gezeigten Beispiel: name fragt den Ausgabennamen ab, amount den Betrag. KRW bezeichnet südkoreanische Won; das Beispiel rechnet keine Währung um. Der Wert ist ein ganzer Won-Betrag, kein Eurobetrag mit Cent-Anteil.
Text, Zahl und Ausgabeformat verfolgen
Der erste Aufruf von input liefert einen Text. strip() entfernt Leerraum am Anfang und Ende, nicht innerhalb des Namens. Auch amount_text ist nach dem Einlesen weiterhin Text. Erst int(amount_text) versucht, daraus eine ganze Zahl zu machen. Die Referenz zu input und die Referenz zu int beschreiben diese unterschiedlichen Schritte.
Eine f-Zeichenkette beginnt mit f vor den Anführungszeichen. Ausdrücke in geschweiften Klammern werden ausgewertet und in den Text eingesetzt. In {amount:,} aktiviert das Komma die Gruppierung mit Kommas: 8000 erscheint als 8,000. Das ist keine automatische Anpassung an deutsche Tausender- und Dezimaltrennzeichen. Die Python-Formatierungssyntax legt die Bedeutung fest.
Geben Sie deshalb für die Umwandlung zunächst 8000 ohne Gruppierungszeichen ein. Weder 8,000 noch 8.000 wird von diesem int-Aufruf als gruppierte Zahl 8000 gelesen. Ausgabeformatierung und Einleseformat sind zwei getrennte Entscheidungen.
Der Code ist noch keine vollständige Prüfung einer Ausgabe. Ein leerer Name wird akzeptiert; int akzeptiert auch negative ganze Zahlen. Wenn Ihr Anwendungsfall nichtnegative Beträge und nichtleere Namen verlangt, benötigen Sie zusätzliche Bedingungen. Dass eine Umwandlung gelingt, sagt noch nicht, dass der Wert fachlich zulässig ist.
Gezielt andere Eingaben und Fehler ausprobieren
- Führen Sie das Programm mit
lunchund9000erneut aus. Erwarten Sielunch: 9,000 KRW. - Geben Sie vor und nach
lunchsowie8000Leerzeichen ein. Nachstrip()sollte das Ergebnis wiederlunch: 8,000 KRWsein. - Geben Sie als Betrag
8000.5ein. Die Umwandlung des Textes in eine ganze Zahl scheitert mitValueError; die Ergebniszeile wird nicht ausgeführt. - Probieren Sie einen leeren Betrag und danach
abc. Auch diese Eingaben führen zuValueError. Die genaue zusätzliche Fehlermeldung kann je nach Python-Version variieren. - Stellen Sie die Eingaben
lunchund8000wieder her und bestätigen Sie das ursprüngliche Ergebnis.
Wenn der Cursor an einer Eingabeaufforderung wartet, ist das nicht automatisch ein hängen gebliebenes Programm. Prüfen Sie, ob es gerade eine Eingabe erwartet und ob Sie das Terminal statt eines reinen Ausgabefensters verwenden. Ohne weitere Fehlerbehandlung beendet eine ungültige Umwandlung das Beispiel mit einem Traceback.
Erst eine bewusst gestaltete Validierungsschleife kann fehlerhafte Eingaben erklären und erneut abfragen. Verfolgen Sie zunächst für jede Zeile, welcher Wert Text und welcher eine Zahl ist. Ein pauschales Verschlucken aller Fehler würde sowohl Eingabefehler als auch andere Programmfehler unsichtbar machen.




