Eingabenamen in Python
Eine einfache Klasse verbreiteter Programme liest eine Eingabe mit ›input‹ ein und gibt dann ein Ergebnis mit ›print‹ aus. Wir haben solche Programme bisher auch schon geschrieben, wobei wir Ausdrücke mit verschachtelten Aufrufen wie »print( 2 * input() )« verwendet haben. (Unten steht „␣“ für ein eingegebenes Leerzeichen, das aber bei der Eingabe normalerweise nicht als „␣“ angezeigt wird.)
- Verschachtelter Aufruf
print( 2 * input() )
- Hallo?␣
Hallo? Hallo?
Einführung von Namen
Beim verschachtelten Aufruf »print( 2 * input() )« kann man den zeitlichen Ablauf des Programms weniger gut erkennen, da die einzelnen Programme »input«, »*« und »print« genau so dastehen, daß das zuletzt ausgeführte Programm ›print‹ zuerst erscheint und das zuerst ausgeführte Programm ›input‹ zuletzt. Außerdem können verschachtelte Aufrufe leicht unübersichtlich werden – man denke an Beispiele wie »f(g(j(),k(l(),m(),n())),h())«.
Die Einführung von Namen für Objekte kann ein Programm manchmal übersichtlicher machen.
- Folge von Anweisung mit Verwendung von Namen
eingabe = input(); ergebnis = 2 * eingabe; print( ergebnis )
Bei der Anweisungsfolge wurde ein Name »eingabe« an das Ergebnis des Aufrufs von der Funktion ›input‹ gebunden und ein Name ›ergebnis‹ an das Ergebnis der Multiplikation. Schließlich wurde dann mit ›print‹ eine Textdarstellung des Ergebnisses ausgegeben.
Bei dem neuen Programm ist die Reihenfolge der Erwähnungen der Operationen ›input‹, ›*‹ und ›print‹ dieselbe Reihenfolge wie die Reihenfolge, in welcher diese drei Programme zeitlich hintereinander ausgeführt werden. Außerdem gibt es keine Verschachtelungen von Klammern mehr. Insofern könnte man das neue Programm für übersichtlicher halten. In der Praxis zeigt es sich, daß verschachtelte Aufrufe aber auch manchmal übersichtlicher sein können als solche Anweisungsfolgen – man entscheidet am besten von Fall zu Fall, welche Variante übersichtlicher ist!
Einlesen einer Zeichenfolge
Im folgenden Beispiel wird die Eingabe an den Namen »wort« gebunden und dann in eckigen Klammern ausgegeben.
- Protokoll
wort = input( "Wort? " ); print( '[' + wort + ']' )
wort? alpha
[alpha]
type( wort )
<class 'str'>
Einlesen eines Numerales
Im folgenden Beispiel wird die Eingabe an den Namen »wort« gebunden und dann in eckigen Klammern ausgegeben. Man kann sehen, daß der Typ eines eingegebenen Numerales ›str‹ ist.
- Protokoll
wort = input( "Wort? " ); print( '[' + wort + ']' )
wort? 22
[22]
type( wort )
<class 'str'>
Einlesen eines Numerales
Im folgenden Beispiel wird die Eingabe an den Namen »numerale« gebunden und dann der ein um Eins vermehrte Zahlenwert jener Variablen ausgegeben.
- Protokoll
numerale = input( "Zahl? " ); print( int( numerale )+ 1 )
Zahl? 23
24
Einlesen eines Numerales
Im folgende Beispiel werden alternative deutschsprachige Namen für die verwendeten Funktionen definiert.
- Protokoll
Lies = input
Schreib = print
Wert = int
zahl = Lies( "Zahl? " ); Schreib( Wert( zahl )+ 1 )
Zahl? 14
15