Warnung
Die meisten Programmiersprachen teilen zwei ganzzahlige Werte ganzzahlig. Die Version 3 von Python verwendet einen Fließkommawert, wenn die Division nicht ganzzahlig aufgeht. Python 2 können Sie dazu zwingen, eine Fließkommadivision durchzuführen, indem Sie einen der Operanden als Fließkommazahl schreiben, also beispielsweise statt 1/2 einfach 1.0/2 schreiben.
Wenn Sie in Python unbedingt nur das ganzzahlige Ergebnis haben wollen, verwenden Sie einen doppelten Schrägstrich. Er führt eine sogenannte Floor-Division durch und dann ist 1//2 plötzlich wieder 0. Bitte nicht weinen. Wenn Sie so schön ganzzahlig dividiert haben, ist natürlich etwas unter den Tisch gefallen, was in der Grundschule als »Rest« bezeichnet wird. Diesen Rest einer ganzzahligen Division ermitteln Programmierer mit der Modulo-Operation. Dazu missbraucht Python das Prozentzeichen.
rest = 17 % 4
Die Variable rest enthält anschließend den Wert 1. Dieser Operator erweist sich beim Test der Teilbarkeit als praktisch. Ergibt die Operation 0, sind die Zahlen durcheinander teilbar. Auch können Sie mit der Modulo-Operation sehr schön eine Dezimalzahl in ihre Ziffern zerlegen, wenn Sie sie mehrfach mit zahl%10 bearbeiten.
Hinweis
Wo wir gerade dabei sind: Prozentrechnung wird von Programmierern eigentlich nie mit dem Prozentzeichen betrieben. Um 5 Prozent eines Wertes zu berechnen, multipliziert man ihn mit 5 und teilt ihn durch 100. Oder aber man kürzt es ab, indem man mit 0,05 multipliziert. Probieren Sie es aus!
Wenn man schon das Divisionszeichen verdoppelt, drängt sich die Duplizierung des Sterns der Multiplikation für eine Potenzierung auf. Damit kann man Zahlen hochleben lassen, beispielsweise ergibt 23 als Ergebnis 8 und schreibt sich in Python 2**3, das entspricht also 2*2*2.
Rangfolge
Wenn Sie Ausdrücke kombinieren, kommt es schnell auf die Reihenfolge der Berechnung an. Wenn Sie 5 Flaschen Orangensaft und 3 Flaschen Apfelsaft zum Preis von je 2 Euro kaufen wollen, ergibt sich die Rechnung (5 + 3) * 2. Billiger wird es allerdings, wenn Sie 5 + (3 * 2) rechnen. Was gilt also, wenn Sie die Klammern weglassen? Aus der Schule kennen Sie sicher noch die Regel der Punkt-vor-Strich-Rechnung. Bei Python gilt die folgende Reihenfolge:
• Klammern
• Exponent ( Operator **)
• Multiplikation und Division
• Addition und Subtraktion
Operatoren gleicher Ebene werden von links nach rechts ausgewertet. Zur Problemstellung des Safteinkaufs von oben müssten also Klammern gesetzt werden, um eine problemgemäße Rechenweise zu erreichen: (5 + 3) * 2.
Das folgende Beispiel zeigt die Berechnung eines Bruttopreises aus der Sicht des Python-Interpreters.
brutto = netto + netto * MWSt / 100
Weil sowohl die Multiplikation als auch die Division höherrangig als die Addition ist, wird der rechte Teil der Formel zuerst berechnet. Da Multiplikation und Division gleichrangig sind, wird dieser Teil von links nach rechts ausgeführt. Der Computer berechnet den Wert also in den folgenden Schritten:
netto * MWSt
netto * MWSt / 100
netto + netto * MWSt / 100
brutto = netto + netto * MWSt / 100
Da die Zuweisung als Letztes durchgeführt wird, kann zu einer Berechnung auch die Variable verwendet werden, der der Ausdruck zuletzt zugewiesen wird. Dann enthält die Variable rechts vom Gleichheitszeichen den Wert, wie er vor der Zuweisung war. Immer wieder wird das benötigt, wenn eine Zahl um 1 erhöht werden soll.
zaehler = 1
zaehler = zaehler + 1
Nach Ausführung der Zeilen enthält die Variable zaehler den Wert 2.
Die letzte Zeile kann durch zaehler += 1 verkürzt werden. Allerdings ist zaehler++, wie es C oder Java verwendet, in Python nicht erlaubt.
Der Umgang mit der Sprache fällt den Menschen leichter als den Computern. Ein Wort ist aus der Sicht des Computers eine Folge von Buchstaben und wird darum als Zeichenkette oder gern auch als String bezeichnet. Das Wort String ist vor allem Programmierern sympathisch. Das mag an der Assoziation zum String-Tanga liegen. Aber mir stehen die Dinger gar nicht. Das sieht ja aus wie Presswurst.
Python codiert zur Verarbeitung von Zeichenketten jeden Buchstaben in eine Zahl und hängt diese Zahlen anschließend aneinander. Python bezeichnet eine Zeichenkette auch als eine Sequenz von Buchstaben beziehungsweise deren Codierung. Was Python intern daraus macht, soll aber erst einmal egal sein. Wir wollen einfach ein wenig damit programmieren.
Literale
Als Literal bezeichnen Programmierer einen konstanten Wert, der quasi unverpackt ins Programm geschrieben wird. Eine 4 ist beispielsweise ein Zahlenliteral.
In einem Programm werden häufiger feststehende Zeichenketten verwendet. Diese muss der Python-Interpreter natürlich von den Variablennamen unterscheiden. Dazu werden die Zeichenketten entweder durch Anführungszeichen oder durch Hochkommata eingeschlossen. Geht die Zeichenkette über mehrere Zeilen, können Sie auch drei Hochkommata oder Anführungszeichen verwenden. Das folgende Beispiel zeigt, wie die Variablen gruss, name undlyrik mit Zeichenketten gefüllt werden.
gruss = "Hallo!"
name = ’Arnold’
lyrik = """When I see a bird
that walks like a duck
and swims like a duck
and quacks like a duck,
I call that bird a duck.
(James Whitcomp Riley)"""
Listing 3.1 Zeichenkettenliterale
Die Möglichkeit, neben den Anführungszeichen auch Hochkommata verwenden zu können, ist besonders praktisch, wenn der Text selbst Anführungszeichen enthält.
lyrik = ’"Schieß doch!" waren seine letzten Worte’
Ach ja: Sie erinnern sich? Es gibt Ärger, wenn Sie unter Python 2 Umlaute in Zeichenketten verwenden. Was nun? Sie könnten das ß durch ss ersetzen, aber das ist leider nicht einmal durch die Rechtschreibreform abgedeckt. Sie können in der ersten oder zweiten Zeile die Codierung angeben:
# – *– coding: utf-8 – *-
Oder Sie verwenden einfach Python 3 und einen UTF-8-kompatiblen Editor.
Mit Zeichenketten kann man wundervoll herumspielen. Sie finden in Kapitel 8 noch ein paar schöne Anregungen.
So erhebend das Gefühl auch sein mag, wenn das erste eigene Programm mit Zahlen jongliert, so traurig ist es, wenn die Welt da draußen von diesen Fähigkeiten nichts erfährt. Um dem Mitteilungsbedürfnis von Programmen Raum zu geben, stellt die Sprache Python die Funktion print() zur Verfügung. Sie nimmt die auszugebenden Werte in ihre runden Klammern und schickt sie auf die Konsole.
Als Beispiel soll Ihr Programm berechnen, wie lang ein Streifen von zehn Zentimetern Breite wird, wenn Sie einen 500-Gramm-Becher Joghurt verwenden, um damit in der Fußgängerzone ein Fußballfeld zu markieren. Aus jahrelanger Erfahrung wissen Sie, dass Sie den Joghurt mindestens zwei Millimeter dick auftragen müssen.
joghurtbecher = 500
auftragsdicke = 0.2
breite = 10
laenge = joghurtbecher / breite / auftragsdicke
print(laenge)
Listing