Python. Der Sprachkurs für Einsteiger und Individualisten - Arnold Willemer - E-Book

Python. Der Sprachkurs für Einsteiger und Individualisten E-Book

Arnold Willemer

0,0
17,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Sie haben schon viel Gutes über Python gehört und möchten auch in Python programmieren? Dann brauchen Sie dieses Buch. Vorwissen hingegen brauchen Sie nicht. Arnold Willemer erklärt Ihnen zu Beginn, was ein Programmierer überhaupt macht und wie ein Computer mit Zahlen und Texten umgeht. Danach erarbeiten Sie sich mit ihm Schritt für Schritt die Kunst des Programmierens in Python. Die witzige und gut gelaunte Schreibe des Autors wirkt zusätzlich motivierend. Und Ihren Lernerfolg können Sie anhand vieler Aufgaben und Musterlösungen überprüfen. So ermöglicht Ihnen das Buch zuverlässig den schnellen Einstieg in Python.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 387

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Arnold Willemer

Python

Der Sprachkurs für Einsteiger und Individualisten

Fachkorrektur von Frank Agerholm

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;

detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

1. Auflage 2015

 

© 2015 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim

Wiley, das Wiley-Logo und das Wrox-Logo sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern und dürfen nicht ohne schriftliche Genehmigung genutzt werden.

Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.

 

Wir möchten Sie mit diesem Buch optimal unterstützen und freuen uns daher über Ihre Anregungen und Verbesserungsvorschläge. Notwendige Korrekturen veroffentlichen wir im Interesse aller Leser umgehend unter www.wrox-press.de und berücksichtigen sie bei der nächsten Auflage. Herzlichen Dank für Ihre Unterstützung!

Ihr Wrox-Lektoratsteam

[email protected]

 

Coverbild: © julien tromeur/fotolia.com

Umschlaggestaltung: bauer-design, Mannheim

Sprachkorrektur: Petra Heubach-Erdmann, Düsseldorf

Fachkorrektur: Frank Agerholm

Satz: inmedialo Digital- und Printmedien UG, Plankstadt

ePub ISBN: 978-3-527-69472-3

mobi ISBN: 978-3-527-69471-6

Print: ISBN: 978-3-527-76066-4

Inhaltsverzeichnis

Vorwort

Inhalt dieses Buches

Vielen Dank!

Kapitel 1 Programmieren für Einsteiger

1.1 Was tut eigentlich ein Programmierer?

1.2 Wie der Computer mit Daten umgeht

1.3 Sprachbarrieren zwischen Mensch und Computer

Kapitel 2 Annäherung an Python

2.1 Beschaffung und Installation

2.2 Werkzeug

2.3 Gestaltung eines Python-Programms

2.4 Kommentare

2.5 Die Last mit den Umlauten

Kapitel 3 Speicherwerke für Rechenkünstler

3.1 Verschiedene Zahlen

3.2 Mathematische Ausdrücke

3.3 Programmatisches Geschwätz: Zeichenketten

3.4 Alles muss raus: print

3.5 Futter für die Programme: input

3.6 Konvertierung der Variablentypen

3.7 Aufgaben

Kapitel 4 Ablaufstrukturen

4.1 Abfrage if

4.2 Der Umgang mit der Wahrheit

4.3 Programmierte Wiederholung: Schleifen

4.4 Das Bermuda-Projekt

4.5 Aufgaben

Kapitel 5 Funktionen

5.1 Rückgabewert und Adresse einer Funktion

5.2 Parameter

5.3 Globale und lokale Variablen

5.4 Rekursion: Selbstgespräche einer Funktion

5.5 Die anonyme Funktion lambda

5.6 Das Bermuda-Projekt

5.7 Aufgaben

Kapitel 6 Wir bauen die Welt: Klassen

6.1 Konstruktor (und Destruktor?)

6.2 Privat oder Öffentlich?

6.3 Statisch: Ein Attribut für alle Objekte der Klasse

6.4 Wenn eine Zuweisung zur Referenz führt

6.5 Referenzlos im Abfall

6.6 Ein eigener Datencontainer: Der Binärbaum

6.7 Selbst gebaute Operatoren

6.8 Erweiterte Erbschaftsangelegenheiten

6.9 Das Bermuda-Projekt

6.10 Aufgaben

Kapitel 7 Ausnahmsweise falsch: Die Exception

7.1 Selbst gemachte Exception basteln

7.2 Python-Exceptions

7.3 Eine Zusicherung: Assert

Kapitel 8 Der Umgang mit Texten

8.1 Der Umgang mit Zeichenketten und deren Operatoren

8.2 Die Sequenz und die rechteckigen Klammern

8.3 Die String-Methoden

8.4 Textformatierung

8.5 Steuerzeichen

8.6 Internationales Parkett

8.7 Mustererkennung mit regulären Ausdrücken

8.8 Das Bermuda-Projekt

8.9 Aufgaben

Kapitel 9 Käfighaltung für Datenrudel

9.1 Schön eng beieinander: Die Sequenz

9.2 Heterogene Gemeinsamkeit: Das Tupel

9.3 Elementweise veränderbar: Die Liste

9.4 Dimensionen

9.5 Die Reißverschlussfunktion zip

9.6 Zugriff per Schlüssel: Das Dictionary

9.7 Einzigartig und unordentlich: Die Menge

9.8 Das Geheimnis der Container

9.9 Das Bermuda-Projekt

9.10 Aufgaben

Kapitel 10 Grafische Oberfläche (Tkinter)

10.1 Eine kleine Anwendung

10.2 Das Programm ist Event-gesteuert

10.3 Kontrollelemente im Fenster anordnen: Layout

10.4 Kontrollelemente und ihre Optionen

10.5 Eine selbst gebaute Tabelle

10.6 Dialogboxen

10.7 Das Bermuda-Projekt

10.8 Aufgaben

Kapitel 11 Kleine Zeichenschule

11.1 Canvas erzeugen

11.2 Zeichnen im Canvas

11.3 Canvas als Widget-Halter

11.4 Das Bermuda-Projekt

11.5 Aufgaben

Kapitel 12 Gut verschnürt: Module, Pakete und Bibliotheken

12.1 Import

12.2 Eigene Module

12.3 Module testen

12.4 Gebündelt zum Paket

12.5 Aufgaben

Kapitel 13 Naturwissenschaftliches

13.1 Mathematik: math

13.2 Zufallszahlen: random

13.3 Dezimalbrüche: decimal

13.4 Lineare Algebra mit NumPy und SciPy

13.5 Datumsbibliothek

13.6 Aufgaben

Kapitel 14 Dateien

14.1 Textdateien

14.2 Binärdateien

14.3 Zusammenfassung

14.4 Exceptions

14.5 Strukturierte Variablen sichern: JSON

14.6 Packen und Komprimieren: GZIP, ZIP und TAR

14.7 Aufgaben

Kapitel 15 Python und Datenbanken

15.1 Nichts als Tabellen

15.2 Verbindungsaufbau

15.3 Tabellen erstellen: CREATE

15.4 Variationen von INSERT

15.5 Änderungen mit UPDATE

15.6 Löschen mit DELETE

15.7 Ergebnisermittlung durch SELECT

Kapitel 16 Umgang mit XML-Dateien

16.1 Eine Speisekarte als XML-Datei

16.2 XML-Dateien mit ElementTree bearbeiten

16.3 Der XML-Klassiker DOM

16.4 Schrittweise durch die XML-Datei: SAX

16.5 Aufgaben

Kapitel 17 Netzwerk: Socket, E-Mail und WWW

17.1 Der Griff in die Steckdose: Sockets

17.2 Versenden von Mails: SMTP

17.3 Auslesen von Mails per POP3

17.4 Griff ins WWW

Kapitel 18 Parallelverarbeitung mit Threads

18.1 Das machen wir im Schlaf

18.2 Glockengeläut im Threading

18.3 Die alte Bibliothek thread

Kapitel 19 Zusammenarbeit mit dem Betriebssystem

19.1 Die Aufrufparameter des Programms

19.2 Umgebungsvariablen

19.3 Aufruf anderer Programme

19.4 Umgang mit dem Dateisystem

19.5 Das Ende des Programms

Programmentwicklung und Werkzeuge

A Fehler sind auch nur Menschen: Der Debugger

B Eclipse mit PyDev

C Richtig distribuieren: Das eigene Setup

Stichwortverzeichnis

Vorwort

Viele wissen nicht, dass die Mitglieder der bekannten Komikergruppe Monty Python ursprünglich Programmierer waren, die seinerzeit in Maschinensprache und PL/I zauberhafte Programme dichteten. Aber sie klagten, dass die Programmiersprachen so ermüdend langatmig und umständlich seien. Man zeigte ihnen die seinerzeit gebräuchlichsten Sprachen Fortran und Cobol und das gab ihnen den Rest. Sie wollten nicht mehr Programmierer sein. Dann könnten sie ja gleich Komiker oder so etwas werden. Diese traurige Geschichte hörte Guido van Rossum und beschloss, eine Programmiersprache zu schaffen, die einfach und leistungsfähig war. Sie beherrschte die objektorientierte Programmierung und alle Techniken, die man als Programmierer heutzutage benötigt. Er nannte die Programmiersprache Python in Anlehnung an jene gescheiterten Programmierer. Und wer weiß? Vielleicht hätte mit Python sogar aus Mario Barth noch ein brauchbarer Programmierer werden können.

Es ist mir häufiger passiert, dass erfahrene Programmierer über Python erzählten, und sie bekamen dabei leuchtende Augen und erklärten, dass die Sprache unglaublich einfach sei und zu schnellen Ergebnissen käme. Ich hatte daraufhin ein paar kleinere Programme in Python geschrieben und akademisch korrekt die Unterschiede zu anderen Sprachen analysiert. Dann kamen wieder ganz andere Themen auf mich zu. Ich hörte zwischendurch, dass Python immer mehr Verbreitung fände und auch mehr und mehr Raum in den Linux-Distributionen einnahm. Insbesondere wurden wohl Teile des Desktops in Python realisiert. Ich schaute mir Python noch einmal an und spielte damit ein Weilchen herum und dann passierte es: Ich war infiziert. Und so kommt es vor, dass ich mich dabei erwische, wie ich mit leuchtenden Augen erzähle, wie toll Python ist.

Ich habe bereits Bücher über Java und C++ geschrieben und mir immer gedacht, dass es schade ist, dass es keine einfachen Programmiersprachen wie BASIC gibt, die in den 1980er Jahren eine große Verbreitung hatte. Nicht, dass ich mir BASIC zurückwünschte. Es war unstrukturiert, nicht standardisiert und kam schnell an seine Grenzen, sodass man nach kurzer Zeit eine andere Sprache lernen musste. Aber BASIC war einfach. Und damit war es der Einstieg für Leute, die programmieren wollten, ohne viel zu lernen, ohne sich mit ideologischen Konzepten zu befassen, bevor sie die ersten Zeilen eintippen. Warum wird Python nicht an den Schulen unterrichtet? Eine verpasste Chance!

Inhalt dieses Buches

Sie werden in diesem Buch zunächst lesen, was Programmieren eigentlich ist, was Sie an Programmen benötigen. Dabei werden Sie feststellen, dass alles kostenlos im Internet verfügbar ist, egal ob Sie Linux, Mac oder Windows verwenden.

Die Grundlagen wie Variablen, Abfragen, Schleifen und Funktionen werden einen gewissen Raum einnehmen, damit Sie sich sicher fühlen. Sie werden die Klassen und damit die objektorientierte Programmierung kennenlernen, die Python wie selbstverständlich beherrscht. Python ist ideal für die Verarbeitung von Listen und assoziativen Speichern. Sie werden lernen, wie einfach Python mit grafischen Oberflächen umgeht, und in die Computergrafik eintauchen. Die naturwissenschaftlichen Bibliotheken werden vorgestellt. Dann kommen wir zum dauerhaften Speichern von Daten in Dateien, Datenbanken oder XML. Sie werden sehen, wie man in Netzwerken und im Internet programmiert, um zuletzt auch die Parallelprogrammierung und das Zusammenspiel mit dem Betriebssystem kennenzulernen. Das hört sich gewaltig an. Aber es geht alles erstaunlich einfach, solange man Spaß am Programmieren hat.

Wenn Sie wie ich vorher schon andere Programmiersprachen kennen, müssen Sie sich von einigen Dogmen befreien und in die Denkweise von Python eintauchen. Das Hauptdogma lautet: »Wir sind alle erwachsen und wir brauchen uns nicht vor uns selbst zu beschützen«. Das widerspricht dem »Law and Order«-Konzept anderer Programmiersprachen, die alles sichern wollen. Wenn man sich auf diese Denkweise einlässt, werden Sie feststellen, dass manches Problem irrsinnig schnell lösbar ist.

Vielen Dank!

Dieses Buch habe ich durchaus selbst geschrieben, aber bevor es bei Ihnen auf dem Schreibtisch landet, arbeiten viele, viele Köpfe daran mit.

Dieses Buch hat der Verlag Wiley durch drei Lektoren betreuen lassen. Verlagslektoren begleiten das Buch von der ersten Entstehung bis zu ihrer Fertigstellung und halten den Autor davon ab, mit dem Thema durchzubrennen und den Leser einsam zurückzulassen. Angefangen hatte Christine Siedle. Dann übernahm Sandra Bollenbacher. Und zuletzt musste sich Marcel Ferner mit mir herumschlagen.

Als Fachlektor konnte ich Frank Agerholm gewinnen. Er passt auf, dass ich keinen Unsinn über Python verbreite. Petra Heubach-Erdmann versucht, die deutsche Sprache vor meiner Schlamperei zu bewahren, und hilft mir bei Wortfindungsstörungen.

Ganz viele Helfer gibt es im Bereich des Layouts und des Drucks. Sie sorgen dafür, dass die Grafiken passen, dass die Anordnung der Seiten stimmt und das Buch wie ein Buch und nicht wie ein Referatsmanuskript aussieht.

Und dann gibt es noch die Leser meiner Bücher. Seit über fünfzehn Jahren melden sie mir meine Fehler und fragen nach. Das hat mir geholfen, beim Schreiben den Anfänger im Hinterkopf zu behalten. Ich hoffe, es ist mir auch diesmal gelungen.

Arnold Willemer Norgaardholz

Kapitel 1 Programmieren für Einsteiger

Hier sind Sie richtig, wenn Sie noch nie programmiert haben. Erst einmal haben Sie die richtige Sprache erwischt, aus meiner Sicht natürlich das richtige Buch und vor allem nun auch noch den richtigen Abschnitt.

Sollten Sie allerdings schon Programmiererfahrung haben, werden Sie sich hier vielleicht langweilen. Und bevor Sie noch einschlafen und mir den Abschnitt verschnarchen, blättern Sie lieber zum nächsten Abschnitt weiter.

1.1 Was tut eigentlich ein Programmierer?

Programmieren ist eine schöne Beschäftigung. Sie können herumkommandieren, ohne dass es Ihnen irgendjemand übel nimmt. Anstatt selbst zu arbeiten, überlassen Sie dies dem Computer. Sie tun Dinge, die andere Leute nicht können. Und Sie erschaffen kreativ eine virtuelle Welt.

Ein Programm besteht aus Anweisungen, die Sie dem Computer vorlegen. Und er wird sie geduldig genau so ausführen, wie Sie sie formuliert haben, also auch mit den Fehlern, die Sie einbauen. Also werden Sie irgendwann nach diesen Fehlern suchen müssen. Der frustrierende Teil der Arbeit ist, dass Sie immer auf Ihre eigenen Fehler stoßen werden.

Da ein Computer von Haus aus nicht fantasiebegabt ist, sind die Anweisungen sehr einfach und klar. Man merkt an dieser Stelle, dass der Computer ursprünglich geschaffen wurde, um mathematische Probleme zu lösen. Weiß der Computer, wie er ein Problem lösen kann, dann kann er das immer wieder tun. Und er tut es eben sehr schnell. Sie werden noch sehen, dass man mit einem Computer neben der Mathematik noch anderen Unsinn machen kann.

Rechne du doch!

Hinweis
Damit Sie ein Bild über das Programmieren an sich gewinnen, werde ich Sie nun im Schnelldurchgang mit einigen Python-Listings belästigen. Geraten Sie nicht in Panik. Alles wird an anderer Stelle ausführlich beschrieben. Hier geht es nur um den Überblick. Entspannen Sie sich und lehnen Sie sich zurück!

Nehmen wir an, Sie wollen für die nächste Demo Tomaten kaufen. Sie wissen, dass fünf Tomaten 1,35 Euro kosten. Sie wollen aber 17 Tomaten, weil Ihr Patronengurt genau so viele aufnimmt. Sie erkennen sofort: Das ist der klassische Dreisatz. Sie zücken vielleicht schon Ihren Taschenrechner. Aber halt! Anstatt den Dreisatz jedes Mal selbst durchzurechnen, schreiben Sie ein Programm. Das bedeutet, Sie erklären dem Computer einmal, wie er mit dem Dreisatz umzugehen hat, und danach kann er das alleine. Leider müssen Sie dazu einmal darüber nachdenken, wie so ein Dreisatz funktioniert. Er besteht aus folgenden Schritten. Es sind drei. Logisch. Sonst hieße das Verfahren auch nicht Dreisatz.

1. Teile den Preis des Tomatenpakets durch die Anzahl der Tomaten.
2. Multipliziere diesen Preis mit der Zahl der gewünschten Tomaten.
3. Gib das Ergebnis auf dem Bildschirm aus.

Dies ist ein Programm. Allerdings ist die Programmiersprache für den Computer schwer nachvollziehbar. Der hätte es nämlich gern ein wenig formaler. Nehmen wir also irgendeine Programmiersprache. Wie wäre es mit Python?

PreisTomatenPaket = 1.35 Anzahl = 5 GewuenschteAnzahl = 17 PreisEinerTomate = PreisTomatenPaket / Anzahl Ergebnis = PreisEinerTomate * GewuenschteAnzahl print(Ergebnis)

Listing 1.1 Python im Tomatendreisatz

Wenn der Computer das Programm durchläuft, ermittelt er als Ergebnis 4,59. Wollen Sie eine andere Anzahl an Tomaten, ändern Sie im Programm den entsprechenden Wert und starten das Programm noch einmal. Ändert sich der Preis, ändern Sie ihn.

Natürlich gibt es auch eine Anweisung, mit der der Computer den Benutzer auffordert, Zahlen einzugeben. So müssen Sie nicht für jede Wertänderung das Programm anpassen. Aber lassen Sie mir dieses süße Geheimnis für später.

Eine Beschreibung zur Lösung eines Problems nennt man Algorithmus. Ein gut gegliederter Algorithmus kann leicht in ein Programm überführt werden.

Von Fall zu Fall

Das Programm könnte aber noch mehr. Wenn Sie ab 10 Tomaten Rabatt von 10 Prozent bekommen, würde dies der Computer auch berechnen können. Dazu schieben Sie an geeigneter Stelle den folgenden Algorithmus ein.

Wenn die gewünschte Menge der Tomaten 10 oder höher ist ...

• ... ziehe vom Einzelpreis 10 Prozent ab.

10 Prozent abzuziehen ist dasselbe wie 90 Prozent vom Preis. 90 Prozent von irgendetwas errechnet man einfach, indem man irgendetwas mit 0,9 multipliziert. Das vereinfacht den Programmiercode etwas. Die Abfrage wird dann an passender Stelle in unser Listing 1.1 eingebaut.

PreisTomatenPaket = 1.35 Anzahl = 5 GewuenschteAnzahl = 17 PreisEinerTomate = PreisTomatenPaket / Anzahl if GewuenschteAnzahl >= 10:     PreisEinerTomate = PreisEinerTomate * 0.90 Ergebnis = PreisEinerTomate * GewuenschteAnzahl print(Ergebnis)

Listing 1.2 Tomatenberechnung mit Rabattabfrage

Sie könnten jetzt noch weitere Sonderfälle in das Programm einbauen. So könnte es sein, dass ein Beutel mit 7 Tomaten mit 1,40 billiger ist als die einzelnen Tomaten. Also soll der Computer doch bitte errechnen, wie viele Beutel ich kaufen muss, wie viele einzelne Tomaten und was das alles zusammen kostet.

Spicker
Das Prinzip ist, dass Sie dem Computer erklären, wie es gemacht wird, und der Computer erledigt die Rechnerei für Sie. Das gilt für Tomateneinkäufe wie für Börsengeschäfte oder Sparbriefe. Lassen Sie den Computer arbeiten!

Wiederholungstäter

Ihre Freundin erzählt Ihnen, dass der Nachbar seit einem Jahr mit dem Rauchen aufgehört hat und dadurch 1.000 Euro gespart hat, die er nun auf der Bank in einem Sparbrief angelegt hat. Sie rauchen zwar nicht. Diese Einnahmequelle fällt flach. Aber Sie beschließen, das Tomatenwerfen einzustellen, und wollen nun auch 1.000 Euro anlegen.

Bei Sparbriefen werden die Zinsen immer wieder am Ende des Jahres hinzugefügt und das führt uns zu einem weiteren Element der Programmierung, nämlich der Wiederholung. Der Programmierer spricht auch von Schleifen. Sie bekommen für einen Sparbrief jedes Jahr 6 Prozent Zinsen, die auf die Einlagen aufgeschlagen werden, also in den Folgejahren mitverzinst werden. Der Vertrag läuft über 7 Jahre. Wenn Sie das dem Computer vorlegen, können Sie ihm einfach sagen: Wiederhole diese Berechnung bitte 7 Mal.

Damit das Beispiel nicht zu trivial wird, nehmen wir noch an, dass Sie ab dem 3. Jahr sogar 9 Prozent Zinsen bekommen. Ich kann bei den Zinsen großzügig sein. Ich muss sie Ihnen ja nicht auszahlen.

Die Geldanlage sind 1.000 Euro.

Wiederhole 7 Mal:

Wenn das Jahr kleiner als 3 ist:

Schlage der Einlage 6 Prozent Zinsen zu.

Wenn das Jahr 3 oder größer ist:

Schlage der Einlage 9 Prozent Zinsen zu.

Erhöhe das Jahr um 1

Gebe die Einlage auf dem Bildschirm aus.

Sie sehen, dass die Abfrage in die Schleife eingebaut wurde. Diese Art der Kombination der Programmierelemente ist zunächst vielleicht verwirrend, aber bei längerem Nachdenken logisch. Diese Art, Aufgaben zu formalisieren, damit der Computer es versteht, ist die Aufgabe eines Programmierers.

Der Vollständigkeit halber zeige ich Ihnen, wie das Programm aussieht, das aus dem Algorithmus hervorgeht. Vielleicht werden Sie die Befehle nicht verstehen. Keine Sorge, die werden in den nächsten Kapiteln im Detail erläutert. Wichtig ist nur, dass Sie sehen, wie sich aus dem Algorithmus das fertige Programm entwickelt.

Einlage = 1000 Jahr = 1 while Jahr <= 7:     if Jahr < 3:         Einlage = Einlage + Einlage * 0.06     if Jahr >= 3:         Einlage = Einlage + Einlage * 0.09     Jahr = Jahr + 1 print(Einlage)

Listing 1.3 Sparbriefe

Tatsächlich kann der Computer gar nicht viel mehr als Abläufe, Abfragen und Schleifen. Programmiersprachen kommen nur deshalb nicht mit fünf Befehlen aus, weil es noch einige Mechanismen gibt, die dem Programmierer helfen, Programmteile zu strukturieren, um sie mehrfach verwenden zu können.

1.2 Wie der Computer mit Daten umgeht

Wenn Computer und Menschen über Zahlen reden, meinen sie nicht ganz dasselbe. Der Mensch verwendet das Dezimalsystem, vermutlich, weil er zehn Finger hat. Computer dagegen kennen nur zwei Zustände. Entweder es ist Strom auf der Leitung oder nicht. Aber genauso wie die meisten Menschen mit größeren Zahlen als 10 umgehen können, kann auch der Computer nicht nur bis 2 zählen. Durch das Verwenden mehrerer Stellen können beinahe beliebige Zahlen dargestellt werden, ob im Zehner- oder im Binärsystem.

In den meisten Fällen kann es Ihnen egal sein, wie Ihr Computer seine Zahlen intern darstellt. Ich will Sie damit auch gar nicht länger belästigen. Aber Sie werden feststellen, dass die 2 und ihre Potenzen magische Zahlen für Computer sind. Acht Stellen sind ein Byte. Und da 28 256 ist, können darin 256 Zustände abgespeichert werden. Ein Kilobyte sind 1024 Byte, weil 1024 210 sind. Zur leichteren Unterscheidung vom Kilo Zucker wird das Kilo für Bytes mit einem großen K abgekürzt.

Die unterschiedlichen Codierungen haben für die Nachkommazahlen fatale Folgen. Sie kennen vielleicht das Ergebnis, wenn Sie in Ihrem Taschenrechner 1 durch 3 teilen. Das erwartete Drittel erscheint als eine endlose Kolonne von Dreien hinter der 0 vor dem Komma. Multiplizieren Sie diese Zahl dann mit 3, werden die meisten Taschenrechner spontan eine Reihe von Neunen auf dem Display haben. Wenn das ein Außerirdischer sähe, der mit drei Fingern geboren ist, würde er sehr verblüfft sein. Denn vermutlich hätte er ein Zahlensystem, das auf der 3 basiert, und kann sich nicht vorstellen, dass ein Drittel mal 3 irgendetwas anderes als 1 ergibt. Und ganz ähnlich geht es dem Computer mit dem menschlichen Zehntel, das binär codiert ebenfalls ein endloser Bruch ist.

Spicker
Für den Computer mit seinen zwei Ziffern ist ein Zehntel ein richtig fieser endloser Bruch. Dadurch kommt der Computer beim Rechnen mit Dezimalstellen manchmal zu unsauberen Ergebnissen.

Der Computer und seine Texte

Der Computer speichert die Buchstaben natürlich auch in Bytes, die wie erwähnt 256 Zustände kennen. Die englischen Buchstaben umfassen 26 Zeichen. Hinzu kommen die Großbuchstaben und die zehn Ziffern. Das sind also 62 verschiedene Zeichen. Wenn noch ein paar Satzzeichen wie Punkt, Komma und Fragezeichen hinzukommen, sind es schnell mehr als 64 Zeichen, so dass 6 Bits für die Aufnahme aller Zeichen nicht ausreichen. Darum wurden zunächst 7 Bits verwendet, die einen Zeichenvorrat von 128 ermöglichen. Das letzte Bit wurde erst einmal auf 0 belassen. Diese Codierung wurde als ASCII-Zeichensatz (American Standard Code for Information Interchange) genormt.

Wenn Sie dieses Buch lesen, werden Sie vermutlich die deutsche Sprache verwenden und ahnen, dass die Amerikaner beim ASCII nicht viel Aufwand um die Umlaute getrieben haben. Darum wird das Thema wiederkommen.

Spicker
Buchstaben sind aus Sicht des Computers durchnummeriert. Erst bei der Ausgabe werden aus den Zahlen dann Buchstaben. Da aber Buchstaben für uns Menschen so wichtig sind, werden Buchstaben von Computersprachen besonders behandelt.

1.3 Sprachbarrieren zwischen Mensch und Computer

>Entgegen anderslautenden Gerüchten verstehen Computer uns Menschen gar nicht. Das Herz des Computers, oder besser das Gehirn des Computers, ist der Prozessor, der auch gern CPU (Central Processing Unit) genannt wird. Dieser Prozessor kennt eine übersichtliche Zahl von Befehlen, die einfach durchnummeriert sind. Hinter jedem Befehl steht, mit welcher Adresse oder Wert gearbeitet werden soll, und auch das ist nichts als eine Zahl. Solch einen Zahlensalat kann sich aber kein Mensch merken.

Um dieses gegenseitige Unverständnis zu überbrücken, sind Programmiersprachen entstanden, die etwas dichter an die Vorstellung des Menschen gerückt sind. Ihre Befehle bestehen aus englischen Wörtern. Damit sie auch der Computer versteht, müssen sie in seine Zahlenbefehle übersetzt werden. Dazu gibt es zwei Techniken:

Ein Compiler ist ein Übersetzer, der wie ein Übersetzungsbüro arbeitet. Er nimmt den gesamten Text und übersetzt ihn einmal in die Zielsprache des Computers. Der führt die Übersetzung dann direkt aus. Zur Ausführung des Programms wird dann weder der Originaltext noch der Compiler benötigt.

Ein Interpreter übersetzt den Programmtext wie ein Simultandolmetscher. Er liest den Text dem Computer quasi vor und der führt die Befehle quasi parallel aus. Bei jedem Neustart des Programms werden der Interpreter und der Originaltext benötigt.

Alles so englisch hier!

Ja, die Computerei ist voller Anglizismen. Die Befehle sind englisch, die Bezeichnungen sind englisch, selbst das Wort Computer ist englisch. Wenn Ihr Englisch nicht so toll ist, muss Sie dies nicht beunruhigen. Sie müssen genauso wenig Englisch lernen wie Ihr Apotheker Latein. Denn obwohl die meisten Präparate in der Apotheke lateinische Namen tragen, wird sich Ihr Apotheker schwertun, Julius Caesars Schriften über den gallischen Krieg im Original zu lesen. Und wozu auch? Seit Gründung der Europäischen Gemeinschaft hat es keine kriegerischen Auseinandersetzungen zwischen Franzosen und Italienern mehr gegeben, wenn wir mal von den Stadienkämpfen während der verschiedenen Fußballturniere absehen.

Viele Computerbegriffe sind längst übersetzt, sodass man sich damit nicht wehtut. Ein paar angelsächsische Besonderheiten sollten Sie aber im Hinterkopf behalten.

1. Das Dezimalkomma bei Zahlen ist ein Punkt. Wenn im Programm eine 1.2 steht, ist damit eine deutsche 1,2 gemeint.
2. Beim Datum nennen die Amerikaner den Monat vor dem Tag.
3. Die Amerikaner können sich nicht vorstellen, wozu jemand Umlaute gebrauchen kann, der kein Fan von Heavy Metal ist.
Aber das sind keine Gründe, ein Anglistik-Studium als Voraussetzung für das Erlernen einer Programmiersprache anzusehen.

Kapitel 2 Annäherung an Python

Inhalt
Python als einfacher, aber mächtiger Einstieg in die Programmierung Beschaffung und Installation aller notwendigen Werkzeuge Gestaltung und Kommentierung von Python-Programmen

Python ist eine einfache, leicht verständliche Programmiersprache. Damit ist sie ideal für alle, die gern einmal programmieren lernen wollen. Sie gehen nicht ganz zu Unrecht davon aus, dass das wohl alle Programmiersprachen von sich behaupten. Der Erfinder von Python, Guido van Rossum, setzte diese Idee konsequent um, sodass sich sogar eine Art Philosophie daraus entwickelte. Sie finden unter der folgenden URL »The Zen of Python«: http://legacy.python.org/dev/peps/pep-_0020

So besteht das kleinste Programm bei Python tatsächlich aus nur einer Zeile.

print("Hallo Welt!")

Listing 2.1 Hallo Welt auf Python

Es ist inzwischen Tradition, dass Bücher über Programmiersprachen mit einem Programm beginnen, das einen Gruß an die Welt sendet. Die Funktion print() druckt alles, was in ihren Klammern ist. Die Anführungszeichen besagen, dass es sich hier um Text und nicht etwa um Variablen handelt.

Hinweis
Sie stoßen vielleicht auf Python-Programme, in denen hinter print keine Klammern stehen. Tatsächlich war dies in der Version 2 von Python so. Die in diesem Buch behandelte aktuelle Version verwendet bei print Klammern. Da Version 2 an einigen Stellen noch eingesetzt wird, werden Sie von Zeit zu Zeit Hinweise darauf finden.

Ich könnte bei der Gelegenheit noch einmal die Werbetrommel rühren, dass Python trotz seiner Einfachheit extrem leistungsfähig ist. Aber das ist ja gar nicht mehr nötig, schließlich haben Sie vermutlich das Buch schon gekauft und wollen jetzt Python lernen.

Python versteht sich mit fast allen Plattformen. Das fängt bei Linux, Mac und Windows an und hört bei Smartphones auf. Programme in Python zu schreiben, hat also den Charme, dass diese dann auf vielen Plattformen laufen können.

Die Heimat von Python im World Wide Web finden Sie unter www.python.org. Diese ist weitgehend in englischer Sprache gehalten. Aber es gibt auch reichlich deutschsprachige Foren, wo man Ihnen gerne weiterhilft.

2.1 Beschaffung und Installation

Um in Python programmieren zu können, benötigen Sie einen Interpreter. Der ist nicht nur kostenlos, sondern auf Linux- und Mac-Systemen meist sogar bereits fertig installiert. Damit können Sie also schon loslegen, während die Benutzer von Windows sich noch an die Website www.python.org wenden müssen. Aber auch für Mac- und Linux-Benutzer kann sich ein Besuch der Seite lohnen, wenn eine neuere als die mitgelieferte Version benötigt wird.

Download

Auf der Website www.python.org finden Sie einen Menüeintrag namens DOWNLOAD. Wenn Sie diesen aufklappen, finden Sie eine Download-Möglichkeit für Ihr gerade verwendetes Betriebssystem, aber auch einen Verweis auf alle möglichen anderen Systeme, von denen Sie vielleicht noch nie etwas gehört haben.

Wenn Sie dem Download-Button folgen, werden Ihnen nach einigen Rückfragen schließlich diverse Dateien (Files) angeboten werden. Für Windows verwenden Sie am einfachsten den MSI Installer. Auch für die anderen Systeme finden Sie die Standard-Installationsdateien, wie Sie sie auch von anderer Software her kennen.

Die Installationsdateien unterscheiden auch zwischen 32- und 64-Bit-Versionen und Architekturen, wie etwa bei Mac zwischen PPC- und Intel-Geräten. Unter Linux verwenden Sie am besten den eingebauten Software-Manager und suchen dort nach Python. Er wird automatisch die richtige und geprüfte Version für Ihr System heraussuchen.

Nach dem Download der Windows- und Mac-Version erhalten Sie eine für die jeweilige Plattform übliche Installationsdatei. Da Sie ja vermutlich mit der jeweiligen Plattform zumindest als Anwender vertraut sind, dürfte Ihnen die Installation nicht schwerfallen. Sie läuft auch nicht anders als die einer Textverarbeitung oder eines Spiels.

Abb. 2.1 Installation von Python unter Windows

Bei der Windows-Installation können Sie einfach alles bestätigen. Im Dialog CUSTOMIZE sollten Sie beim Stichwort ADD PYTHON.EXE TO PATH einen Haken anbringen (siehe Abbildung 2.1). Danach sehen Sie ein schickes Fortschrittbalkenkino, sofern Sie zuvor angegeben haben, dass Sie einer Installation zustimmen.

2.2 Werkzeug

Für die Python-Programmierung benötigen Sie nicht viel Werkzeug. Prinzipiell reicht Ihnen ein Programm, mit dem Sie Ihre Programme eintippen können, und der Interpreter, den Sie kostenlos herunterladen können, wie in Abschnitt 6 beschrieben. Dazu benötigen Sie eine Kommandozeile, um Editor und Interpreter aufzurufen. Unter Windows heißt diese Eingabeaufforderung, unter Mac und Linux Shell, Konsole oder Terminal.

Da allerdings Eingabeaufforderung und Editor vor allem unter Windows nicht wirklich komfortabel sind, empfiehlt sich für den Anfänger das Programm IDLE, das eine Shell und einen Editor zu einer Arbeitsumgebung vereinigt.

2.2.1 Die Standard-IDE IDLE

Bei Windows und Mac richtet die Python-Installation gleich die Entwicklungsumgebung IDLE ein. Linux stellt Python zwar von Haus aus zur Verfügung. Allerdings muss das Paket idle bei Bedarf nachinstalliert werden. Dazu rufen Sie Ihre Software-Verwaltung auf und suchen nach dem Stichwort IDLE. Wählen Sie INSTALL und das Paket wird in das System integriert.

Das Programm IDLE rufen Sie am einfachsten über das entsprechende Menü der grafischen Oberfläche auf. Unter Windows 8 wird ein eigener Abschnitt Python unter den Apps eingerichtet. Linux legt die IDLE unter der Standardgruppe Entwicklung ab.

Abb. 2.2 Die Python-IDE IDLE

Sie können IDLE auch von der Kommandozeile aus aufrufen. Wird idle in Kombination mit einem Programmnamen aufgerufen, öffnet IDLE den Quelltext in einem kleinen Editor und lädt zum Editieren ein.

Es besitzt eine eigene Menüleiste und darüber können Sie wie bei einer Textverarbeitung Dateien öffnen und speichern. Allerdings wird IDLE meist mit englischen Menüs geliefert, wo das Wort Datei eben File heißt. Mit DATEI | NEU oder FILE | NEW können Sie ein neues Programm anlegen. Dafür erhalten Sie dann ein neues Editor-Fenster. Der Editor ist ideal auf Python zugeschnitten. Er erkennt Programmiersprachenelemente und markiert sie farblich und vervollständigt manchen angefangenen Befehl. Über die Taste oder das Menü RUN | RUN MODULE startet er das eingegebene Programm und zeigt die Ausführung in einem separaten Fenster an.

Das Hauptfenster von IDLE verhält sich ganz ähnlich wie der Python-Interpreter und bietet Ihnen den Prompt mit den drei Größerzeichen an, um Python-Befehle direkt ausprobieren zu können.

Wenn Sie mit IDLE arbeiten wollen, können Sie die folgenden Abschnitte erst einmal überspringen und direkt mit Abschnitt 2.3 weitermachen.

Weitere IDEen

Wenn Sie sich etwas Größeres wünschen, können Sie die IDE Eclipse dazu bringen, mit Python statt mit Java zu arbeiten. Abschnitt B verrät Ihnen, wie das geht.

Als weitere IDE gibt es Spyder, die aus dem naturwissenschaftlichen Umfeld stammt. Nähere Informationen finden Sie unter https://github.com/spyder-_ide. Linux-Benutzer können es direkt über ihren Software-Paketdienst installieren. Andere wenden sich vertrauensvoll an die oben genannte Website.

2.2.2 Direktaufruf von Editor und Interpreter

Viele Python-Programmierer verwenden lieber ihren eigenen Editor und rufen dann den Interpreter entweder aus dem Editor selbst oder eben von einer Kommandozeile aus auf. Auch dieser Weg der Programmierung ist unter Python recht unkompliziert.

Editor

Ein Editor ist eine Textverarbeitung für Arme. Ein Editor beherrscht keine Schriftarten und kann weder mit Bildern noch mit dem Seitenumbruch umgehen. Das ist alles nicht nötig, denn der Interpreter will keine hübschen Texte, sondern knackige Programme. Ein mit einer Textverarbeitung wie Word oder dem Writer aus Libre-Office nett aufbereiteter Programmtext würde den Interpreter total durcheinanderbringen, da er Fettschrift nicht interpretieren kann.

Unter Linux können Sie nano oder vi einsetzen. Unter Windows beispielsweise Notepad, den Sie unter Zubehör unter dem schlichten Namen Editor finden.

Aufruf des Interpreters aus der Kommandozeile

Wenn Ihr Programm fertig ist, können Sie es dem Python-Interpreter zur Ausführung übergeben. Dazu starten Sie eine Kommandozeile und rufen von dort den Python-Interpreter mit dem Befehl python gefolgt vom Programmnamen auf. Der Aufruf der Kommandozeile erfolgt bei den verschiedenen Systemen auf unterschiedliche Methoden. Hier sind ein paar einfache Vorschläge:

Windows: Hier drücken Sie die Windows-Taste gemeinsam mit der Taste R, also + . Daraufhin erscheint eine Dialogbox, die wissen will, welches Programm Sie aufrufen wollen. Dazu geben Sie den Befehl

cmd

an und es erscheint ein schwarz gefülltes Fenster, in dem Sie Befehle eingeben können.

Mac: Sie drücken die Apfel-Taste mit der Leertaste gemeinsam, also + . Es erscheint rechts oben ein Eingabefeld, in das Sie

Terminal

eintippen. Dann drücken Sie und schon erscheint ein weiß gefülltes Fenster, in dem Sie Befehle eingeben können.

Linux: Für Linux gibt es eine Vielzahl von grafischen Oberflächen. Je nach Variante finden Sie oft eine Möglichkeit, nach Befehlen zu suchen wie auf dem Mac, oder Sie finden die Programme nach Kategorien sortiert in einem Menü. Suchen Sie nach

Terminal

oder

Konsole

unter den Rubriken

Zubehör

oder

System

. Auch hier erhalten Sie ein Fenster, in dem Sie Befehle eingeben können.

Als Befehl verwenden Sie python und als Argument übergeben Sie den Namen Ihres Python-Programms, wie hier beispielsweise meinprogramm.py. Sie können eines der Beispiele aus dem ersten Kapitel verwenden, beispielsweise den Tomatendreisatz aus Listing 1.1 in Abschnitt 1.1. Daraufhin startet Ihr Python-Programm und wird vom Python-Interpreter ausgeführt.

python meinprogramm.py

Wenn Sie den Befehl python allein, also ohne Programmnamen aufrufen, landen Sie in der Kommandozeile des Python-Interpreters. Er zeigt drei Größerzeichen als sogenannten Prompt an und wartet auf Ihre Eingaben. Dieser Modus ist sehr praktisch, wenn Sie mal ein paar Befehle testen wollen.

Hinweis
In einigen Umgebungen kann es sein, dass Sie zwei Interpreter an Bord haben, einen für Python 2 und einen für Python 3. Wenn Sie explizit Python 3 verwenden wollen, können Sie python3 statt python aufrufen.

Direkter Aufruf fertiger Programme

Zum Start eines Python-Programms wird immer der Interpreter benötigt. Sie können aber dem Betriebssystem auch beibringen, dass es beim Aufruf Ihres Programms von der Kommandozeile den Interpreter automatisch aufruft. Die Vorgehensweise unterscheidet sich geringfügig.

Bei Windows können Sie ein Skript, dessen Name auf

.py

endet, direkt aufrufen, wenn Sie den Pfad des Python-Interpreters in die Variable PATH eingebunden haben. Wenn Sie dies bei der Installation angegeben haben, ist das bereits geschehen.

Unter Linux und beim Mac können Sie ein Skript mit dem Befehl

chmod

ausführbar machen.

chmod +x meinskript

Ein ausführbares Skript kann direkt aufgerufen werden. Dazu muss lediglich in der ersten Zeile des Skripts der Interpreter genannt werden. Die ausführbaren Anwendungsprogramme, zu denen auch Interpreter gehören, befinden sich nach POSIX-Standard im Verzeichnis /usr/bin. Darum gehört bei einem Python-Skript folgender Eintrag in die erste Zeile. Da die Zeile mit einem Kommentarzeichen beginnt, stört sie unter Windows nicht.

#!/usr/bin/python

Nun kann ein Python-Skript namens meinskript folgendermaßen aufgerufen werden:

./meinskript

Eine Endung auf .py ist unter Linux oder Mac nicht erforderlich, schadet aber auch nicht.

Start von der grafischen Oberfläche per Doppelklick

Sie können Ihr Programm auch von der grafischen Oberfläche aus per Doppelklick starten. Die grafischen Oberflächen verwenden die Endung einer Datei, um daran zu erkennen, welches Programm für sie zuständig ist. Bei der Installation des Python-Interpreters wird diese Verbindung normalerweise gleich eingerichtet, sodass Sie sich nicht darum kümmern müssen.

Die Datei, die das Python-Programm enthält, muss unter UNIX-ähnlichen Systemen mit dem Befehl chmod +x als ausführbar gekennzeichnet sein, wie dies bereits beschrieben wurde.

Unter Windows erscheint nach dem Doppelklick auf ein Python-Programm immer ein schwarzes Kommandofenster im Hintergrund, auch dann, wenn das Programm Tkinter als grafische Oberfläche verwendet (siehe Kapitel 10). Es verschwindet nach Ende des Programms allerdings auch wieder.

Hinweis
Wenn Ihr doppelt angeklicktes Python-Programm gar keine grafische Oberfläche verwendet, wird ein Textfenster gestartet, das allerdings nach dem Ende Ihres Programms auch gleich wieder verschwindet. Blöd, wenn als Letztes die Ergebnisse erscheinen, für die das Programm extra gestartet wurde. In solchen Fällen sollten Sie zuletzt einfach noch eine Eingabe (siehe Abschnitt 3.5) anfordern. Dann stoppt das Programm automatsch, bis die Taste gedrückt wurde.

2.3 Gestaltung eines Python-Programms

Python hält sich bei der Gestaltung der Programme an Heinz Erhard, der schon bei Büchern vorschlug, diese von links nach rechts zu lesen und am Ende der Zeile mit der darunterliegenden fortzufahren.

Im Gegensatz zu einigen Programmiersprachen legt Python großen Wert darauf, dass die Programmzeilen auch ganz links beginnen. Eingerückte Zeilen gibt es auch. Bei manchen Befehlen wie Abfragen oder Schleifen sind die Folgebefehle von der Bedingungsprüfung abhängig. Um dies zu kennzeichnen, erhalten Befehle, die Folgebefehle erwarten, einen Doppelpunkt angehängt. Die abhängigen Zeilen werden nun eingerückt. Wie viele Leerstellen Sie einrücken, ist Python weitgehend egal. Es haben sich vier Leerzeichen eingebürgert. Aber alle weiteren Zeilen, die gleich weit eingerückt sind, gehören zu dem davorstehenden Befehl. Das Thema werden wir an gegebener Stelle ab Abschnitt 4.1 noch vertiefen.

Eine Zeile ist endlich

Grundsätzlich sollten Sie jede Anweisung in eine neue Zeile schreiben. Aber spätestens, wenn Zeilen länger als 80 Zeichen werden, empfiehlt es sich, am Ende der Zeile einen Backslash (\) zu setzen und in der nächsten Zeile fortzufahren.

Eine solche fortgesetzte Zeile sollte eingerückt werden, damit deutlich wird, dass es nicht eine neue Anweisung ist. Eine Einrückung von acht Leerzeichen gilt als schick. Aber verwenden Sie besser wirklich Leerzeichen und nicht die Tabulatortaste.

Nicht immer müssen Sie beim Umbrechen einer Zeile ein Backslash-Zeichen an das Ende der Zeile stellen. Python ist so schlau, zu erkennen, wenn noch eine Klammer offen ist. Dann arbeitet es den Befehl in der nächsten Zeile weiter ab, auch wenn kein Backslash explizit darauf hinweist.

Falls Sie einmal mehrere sehr kurze Befehle hintereinandersetzen und es nicht nett finden, diese einsam für sich in je einer Zeile zu belassen, dann dürfen Sie sie auch in eine Zeile quetschen. Allerdings müssen Sie dann ein Semikolon dazwischen stellen.

2.4 Kommentare

Bevor Sie die ersten Programme schreiben, sollten Sie lernen, wie man ein Programm kommentiert. Das ist wichtig, weil in Programmen in der Praxis öfter gelesen als geschrieben wird, sei es für Erweiterungen oder Fehlersuche. Und der Kollege, der gern wüsste, wozu dieser Abschnitt des Programms gut sein soll, könnten Sie selbst sein. In ein paar Jahren haben Sie vielleicht vergessen, was Sie sich damals gedacht haben.

Ihre Kommentare gehen den Interpreter nichts an. Damit er nicht mitliest, wird ein Doppelkreuz vor den Kommentar gestellt. Ab diesem Zeichen wird der Rest der Zeile vom Interpreter nicht ausgewertet.

# Dies ist eine Kommentarzeile zahl = 12 # ab dem Doppelkreuz nur fuer menschliche Wesen

Wenn Sie einmal etwas umfangreichere Prosa schreiben wollen, verwenden Sie am besten einen Blockkommentar. Ein Blockkommentar beginnt mit drei Anführungszeichen und endet mit drei Anführungszeichen. Ein solcher Kommentar kann über mehrere Zeilen gehen.

""" Dies ist ein Kommentar der hört hier noch nicht auf Erst am Ende dieser Zeile """

Um genau zu sein, schließt das Dreifachanführungszeichen eigentlich eine Zeichenkettenkonstante ein. In dieser Doppelrolle ist das dreifache Anführungszeichen aber recht praktisch, wenn längere Texte verarbeitet werden sollen.

Das Setzen guter Kommentare ist eine Kunst, die Erfahrung braucht. Zu viele Kommentare verdecken das Wesentliche. Aber wenn ein Programmierer bei Wartungsarbeiten immer wieder grübeln muss, dann verliert man kostbare Zeit. Ein Kommentar kann hier wirklich wertvoll sein.

2.5 Die Last mit den Umlauten

Wenn Sie nun eifrig kommentieren, kann es sein, dass Sie auch mal einen deutschen Umlaut verwenden möchten. Das ist bei der Verwendung von Python 2 keine so gute Idee, weil der Interpreter darauf etwas gereizt reagiert. Das hat nun nichts mit den typischen Feindbildern der Amerikaner gegen die Deutschen zu tun, sondern dass Python 2 normalerweise davon ausgeht, dass alle Texte nach ASCII codiert sind, ein Zeichensatz, der keine nationalen Sonderzeichen kennt. Also: keine Umlaute in Python 2!

Python 3 hat erkannt, dass es in der Welt mehr Zeichen gibt, als die englische Sprache kennt. Darum hat man gleich den großen Wurf gewagt und verwendet Unicode in der Codierung UTF-8. UTF-8 ist eine Codierung für internationale Sonderzeichen und das ist eine lange Geschichte, die ich Ihnen gern in Abschnitt 8.6 erzähle.

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-Programmierer Duck-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.

3.1 Verschiedene Zahlen

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.

3.2 Mathematische Ausdrücke

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 aber verwirrt Programmieranfänger so, dass viele Autoren darüber klagen, dass sie ihre Leser trösten müssen, weil 1/2 plötzlich 0 ergibt. Und das ist doch sehr wenig. Und so hat man sich entschlossen, ab Python 3 lieber als Ergebnis eine Fließkommazahl zuzulassen.

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.

3.3 Programmatisches Geschwätz: Zeichenketten