An UTF-8 hält sich auch IDLE auf allen Plattformen. Schwierig wird es erst, wenn Sie einen Editor verwenden wollen, der kein UTF-8 beherrscht. Damit haben vor allem Windows-Benutzer ein Problem, die einen eigenen Editor verwenden wollen, da Windows noch die Codepage 1252 aus dem Jahr 1998 verwendet. Die ist übrigens verwandt mit ISO-8859-1 (Latin-1), den manch älteres UNIX-System noch einsetzt. Immerhin haben Linux-Benutzer kein Problem damit, weil Linux schon seit Jahren UTF-8 verwendet.
Auch unter Python 2 können Sie UTF-8 im Listing verwenden, müssen aber diese Codierung aber explizit ankündigen. Das können Sie im Quelltext in der ersten oder zweiten Zeile dokumentieren.
# – *– coding: utf-8 – *-
Wollen Sie allerdings unbedingt einen Windows-Editor einsetzen, der UTF-8 nicht beherrscht, können Sie auch die Codepage 1252 angeben.
# – *– coding: cp1252 – *-
Möchten Sie dagegen einen Editor verwenden, der ISO-8859-1 einsetzt, müsste die Zeile so aussehen:
# – *– coding: iso-8859-1 – *-
Auf diese Weise haben Sie zwar den Programmtext Windows-kompatibel gemacht, könnten aber auf ein Problem stoßen, wenn Sie oder jemand anderes Ihr Programm auf einer anderen Plattform oder in IDLE nacharbeiten will. Darum sollten Sie als Tipp mitnehmen, dass Sie besser mit einem UTF-8-fähigen Editor arbeiten.
Nun können Sie eifrig Umlaute eingeben. Aber glauben Sie bloß nicht, dass wir damit das Thema hinter uns gelassen haben. Es kommt wieder.
Kapitel 3 Speicherwerke für Rechenkünstler
Inhalt
• In Variablen merkt sich das Programm seine Werte.
• Variablen haben Namen
• Variablen speichern Zahlen und Zeichenketten
Die ersten Vorläufer der Computer wurden erschaffen, weil die Menschen zu faul waren, selbst zu rechnen. Python steht durchaus in dieser Tradition, kann aber noch einiges mehr, als nur schnell zu rechnen.
Wie ein guter Taschenrechner hat auch Python Speicherplätze. Das Programm kann sich Zahlen in Variablen merken. Und das Tollste ist: Sie müssen sich nicht merken, was Sie in M1, M2 und anderen kryptischen Speichern abgelegt haben, sondern Sie können den Variablen eigene Namen geben, die etwas darüber aussagen, was Sie hineinstecken wollen. Das sollten Sie nutzen!
Spicker
Ein Variablenname wird aus Buchstaben, Ziffern und Unterstrichen zusammengesetzt. Allerdings darf der Name nicht mit einer Ziffer beginnen. Groß- und Kleinschreibung ist bei den Variablennamen signifikant. Bei den Variablen MWSt und MWST handelt es sich um zwei unterschiedliche Variablen.
In Variablen können beispielsweise Zahlen oder Zeichenketten gespeichert werden. Die Art der Werte bezeichnet man als Typ. Welchen Typ eine Variable hat, ob sie also Zahlen oder Texte verarbeitet, bestimmt Python ganz pragmatisch danach, was das Programm hineinsteckt. Dieses Hineinstecken nennt der Programmierer zuweisen. Und die Bildung des Typs durch Zuweisung nennt der Python-ProgrammiererDuck-Typing.
Eine Zuweisung hat auf der linken Seite eine Variable. Es folgt ein Gleichheitszeichen als Operator der Zuweisung. Auf der rechten Seite des Gleichheitszeichens steht eine Zahl oder eine Berechnung. Der Informatiker nennt alles rechts vom Gleichheitszeichen einer Zuweisung einen Ausdruck. Im folgenden Beispiel ist der Ausdruck einfach eine 19.
MWSt = 19
Die Variable MWSt enthält anschließend den Wert 19 und hat einen ganzzahligen Typ. Intern nennt Python diesen Typ int.
Python schreibt vor, dass eine Variable durch eine Zuweisung definiert worden sein muss, bevor sie ausgewertet werden darf. Es wäre ja auch blöd, mit einem Inhalt zu arbeiten, der gar nicht da ist. Dadurch fallen aber auch manchmal Vertipper auf. Der Versuch, nach der obigen Zuweisung auf die Variable MWST zuzugreifen, führt zu einem Programmabbruch, weil deren Name ein großes T hat und ihr also noch kein Wert zugewiesen wurde.
Python kennt grundsätzlich zwei Arten von Zahlen. Das eine sind die ganzen Zahlen und das andere die kaputten. Die kaputten Zahlen werden in der Mathematik auch Brüche genannt. Für die Darstellung verwenden wir allerdings selten Brüche, sondern Nachkommastellen. Nachkommastellen sind aber eigentlich Brüche mit einem Nenner, der sich aus einer Potenz von 10 ergibt.
Hinweis
Wenn es ganz genau sein muss, gibt es in Python auch noch ein Paket, das dem Computer beibringt, mit Dezimalbrüchen zu rechnen. In Abschnitt 13.3 erfahren Sie mehr.
Wenn Programmierer einfach eine Zahl in einem Programm eingeben, sprechen sie übrigens von einem Literal.
Darstellung einer Fließkommazahl
Eine Fließkommazahl beginnt ganz harmlos wie jede normale ganze Zahl. Vielleicht mit einem Vorzeichen, dann einige Ziffern. Dann tritt ein Punkt auf und alle folgenden Ziffern sind Nachkommastellen. Es könnte auch ein großes oder kleines E erscheinen. Dieses leitet den Exponenten zur Basis 10 ein. Sie kennen das von Ihrem Taschenrechner. Dadurch kann eine Fließkommazahl verdammt groß werden. Aber auch der Exponent kann ein Vorzeichen tragen. So steht 1E-3 für 0,001, also ein Tausendstel. Wenn der Exponent noch negativer wird, wird die Zahl verdammt klein.
ganzklein = 0.00000456
print(ganzklein) # gibt 4.56e-06 aus
Sie sehen, wie der Variablen a ein sehr kleiner Dezimalbruch zugewiesen wurde. Python rückt das in der Ausgabe so zurecht, dass die erste Stelle vor dem Komma oder besser Punkt steht und die Verschiebung hinter das Komma durch den negativen Exponenten ausgedrückt wird. Der Wert ist der gleiche geblieben, nur die Darstellung nicht.
Warnung
Wie die meisten Programmiersprachen verwendet Python kein Komma, sondern einen Punkt, wie er im englischsprachigen Raum üblich ist. Das betrifft auch die Ein- und Ausgaben des Programms. Python wird Sie nicht verstehen, wenn Sie mit einem Komma mitten in einer Zahl auftauchen!
Wenn Sie deutlich machen wollen, dass eine 2 von Python bitte als Fließkommazahl zu behandeln sein soll, hängen Sie einfach noch eine Nachkommstelle an und schreiben Sie 2.0.
Python kann Zahlen und Variablen miteinander verrechnen. Für die Addition verwendet Python ein + und für die Subtraktion ein – . Das wird Sie nicht überraschen. Selbst mein Taschenrechner macht das so.
karten = 17 + 4
Wenn die Variable karten nach dieser Anweisung einen anderen Inhalt als 21 hat, haben Sie sich vermutlich vertippt.
Punktrechnung
Bei der Multiplikation gibt es ein Problem mit dem Operator. Der Punkt, wie er in der Mathematik üblich ist, findet sich nicht auf der Tastatur. Es gibt einen Punkt, aber der ist einfach zu flach. Außerdem sieht man ihn nicht gut. Darum verwenden Programmierer gern einen Stern. Für die Division hat man den Bruchstrich schräg gestellt, damit man die Zeile nicht halbieren muss.
produkt = 17 * 4
quotient = 17 / 4
Die Variable produkt enthält anschließend 68, die Variable quotient enthält 4,25, wenn Sie Python 3 verwenden, und 4, wenn Sie Python 2 einsetzen. Der Unterschied entsteht, weil Python 2 wie die meisten anderen Programmiersprachen arbeitet: Wenn zwei ganze Zahlen durcheinander geteilt werden, soll eine ganze Zahl herauskommen, also der ganzzahlige Anteil einer Division.
Das