joghurtbecher = 500
auftragsdicke = 0.2
breite = 10
laenge = joghurtbecher / breite / auftragsdicke
print("Der Streifen ist", laenge, "cm lang")
Listing 3.3 Multiple Ausgabe
Die Ausgabe des Programms sieht so aus:
Der Streifen ist 250.0 cm lang
Damit kann man beim besten Willen kein Fußballfeld markieren. Sie müssen also noch mehr Joghurt kaufen.
Warnung
Die Ein- und Ausgabe unterscheidet sich zwischen Python 2 und Python 3. Wenn Sie in einem Listing ein print ohne Klammern sehen, handelt es sich definitiv um Python 2. Zunächst betrachten wir Python 3.
Wenn die Funktion print() mehrere Werte in einem Rutsch ausgibt, setzt sie immer ein Leerzeichen zwischen die Ausgabewerte. In den meisten Fällen ist das ja auch ganz praktisch. Aber wenn das Leerzeichen stört, können Sie das Trennzeichen der Funktion print() verändern, indem Sie der Parametervariablen sep eine leere Zeichenkette zuweisen.
joghurtbecher = 500
auftragsdicke = 2
breite = 10
laenge = joghurtbecher / breite / auftragsdicke
print("Der Streifen ist", laenge, "cm lang", sep="")
Listing 3.4 Multiple Ausgabe ohne Leerzeichen
Die Ausgabe des Programms sieht nun so aus:
Der Streifen ist250.0cm lang
Probieren Sie doch einfach mal aus, was passiert, wenn Sie stattdessen sep=’+-+’ einsetzen!
So wie die Parametervariable sep das Trennzeichen bestimmt, können Sie über die Parametervariable end das Abschlusszeichen verändern. Normalerweise schließt eine Ausgabe mit einem Zeilenumbruch ab. Wenn Sie hier eine leere Zeichenkette oder ein Leerzeichen einsetzen, wird ein späterer Aufruf von print() seine Ausgabe hinter die bisherige Ausgabe anhängen.
joghurtbecher = 500
auftragsdicke = 0.2
breite = 10
laenge = joghurtbecher / breite / auftragsdicke
print("Der Streifen ist", breite, "cm breit", end=" ")
print("und", laenge, "cm lang")
Listing 3.5 Ausgabe ohne Zeilenabschluss
Wenn Sie in Listing 3.5 die Zuweisung an end weglassen, erscheint das Ergebnis in zwei Zeilen, weil Sie ja auch zwei print()-Aufrufe verwenden.
Ausgabe bis Python 2
Bis zur Python-Version 2 war print ein Befehl und keine Funktion, da eine Funktion flexibler im Umgang ist. Das wird Sie als Anfänger zunächst nicht berühren, hat für Sie aber vor allem die Konsequenz, dass die Ausgabe bei Python 2 keine Klammern benötigte.
Solange print immer nur einen Wert ausgibt, schadet es auch bei Python 2 nichts, wenn Sie dort ebenfalls Klammern setzen. Dann funktioniert Ihr Programm unter beiden Interpretern. Wenn Sie allerdings mehrere Variablen durch Kommata separiert ausgeben wollen, könnten unter Python 2 etwas merkwürdige Zusatzzeichen erscheinen, weil Python 2 glaubt, die Ausgabe sei ein Tupel (siehe Abschnitt 9.2). Auch unter Python 2 kann print mehrere Werte durch Kommata getrennt direkt hintereinander ausgeben. Auch hier erscheint an der Stelle des Kommas ein Leerzeichen.
print "Guten Tag,", name
Listing 3.6 Python-2-Ausgabe mehrerer Werte
Wenn Sie bei Python 2 ganz an das Ende eines print-Befehls noch ein Komma setzen, erscheint die nächste Ausgabe in der gleichen Zeile. Allerdings sollten Sie berücksichtigen, dass angefangene Zeilen nicht unbedingt sofort auf dem Bildschirm erscheinen, sondern erst, wenn die Zeile durch einen Zeilenvorschub abgeschlossen wird.
Ein Programm kann mit immer neuen Werten die gleichen Berechnungen durchführen. Hardcore-Programmierer werden es vielleicht zumutbar finden, dass man einfach die Variablen im Programm für jeden Lauf ändert, aber der normale Anwender wird eine Eingabeaufforderung sehr schätzen. Dazu bietet Python die Funktion input() an.
Warnung
Bis zur Python-Version 2 erlaubt die Funktion input() nur Zahleneingaben. Sollen Texte eingegeben werden, muss die Funktion raw_input() verwendet werden. Python 3 kennt raw_input() dagegen nicht mehr, sondern verwendet input() in dieser Weise. Also liefert die Funktion nun eine Zeichenkette zurück. Um einen Zahlenwert zu erlangen, muss die Zeichenkette beispielsweise mit der Funktion eval() in eine Zahl umgewandelt werden.
Wir bleiben bei Python 3. Zunächst soll einfach ein Programm geschrieben werden, das einen Namen entgegennimmt und wieder ausgibt.
print("Wie heißen Sie?")
name = input()
print("Hallo ", name)
Listing 3.7 Eingabe eines Namens unter Python 3
Die Funktion input() erlaubt auch eine Zeichenkette als Parameter, die dann vor der Eingabe ausgegeben wird. Sie können das Programm also so ändern, dass die Frage an den Benutzer direkt vor der Eingabe steht.
name = input("Wie heißen Sie? ")
print("Hallo ", name)
Listing 3.8 Eingabe eines Namens unter Python 3
Wie erwähnt, gibt die Funktion input() Zeichenketten zurück. Wenn Sie nun allerdings eine Zahl haben wollen, müssen Sie die Zeichenkette erst umwandeln, also konvertieren.
Wenn der Anwender Ihres Programms eine Eingabe macht, dann tippt er Buchstabe um Buchstabe, woraus sich eine Zeichenkette ergibt. Soll er eine Zahl eingeben, tippt er Ziffer um Ziffer und auch das ist zunächst eine Zeichenkette.
Wenn der Computer aber die eingegebene Zahl in einer Rechnung verwenden will, dann kann er nicht anders, als die Zeichenkette in eine Zahl zu verwandeln. Dazu bietet Python die Funktion eval() an.
eingabe = input()
zahleneingabe = eval(eingabe)
Listing 3.9 Eingabe einer Zahl unter Python 3
Die Funktion eval() zeigt sich als extrem hilfsbereit. Sie wandelt nicht nur einfache Ziffernfolgen in Zahlen, sondern beherrscht sogar die Rechenfunktionen von Python. So ermittelt sie aus 17+4 die Zahl 21. Selbst Variablen des Programms können bei der Berechnung hinzugezogen werden.
Warnung
Wenn diese gemeinen Anwender es wagen, statt der geforderten Zahl ihren Namen einzugeben oder die Adresse ihrer Autowerkstatt, dann wird das Programm rigoros zur Landung gezwungen. Das ist blöd, aber Rettung naht. In Abschnitt 4.3.2 wird genau dieses Problem behandelt.
Python kennt zwei Arten von Zahlentypen: Da gibt es die ganzzahligen Werte (int) und die Fließkommazahlen (float). Für jeden der Typen gibt es eine Funktion, die nichts anderes tut, als die Variable im Parameter in den eigenen Typ umzuwandeln.
ganzzahlvar = int(’42’) # 42
ganzzahlvar = int(9.8) # 9
nachkommavar = float("9.81") # 9.81
nachkommavar = float(9) # 9.0
In den Kommentaren hinter den Zuweisungen steht, in welche Zahl der Wert zwischen den Klammern konvertiert wird. Eine Zeichenkette wird wie erwähnt auch String genannt. Davon abgeleitet nennt Python