17,99 €
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:
Seitenzahl: 387
Arnold Willemer
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
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
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
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!
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
>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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
Wenn Programmierer einfach eine Zahl in einem Programm eingeben, sprechen sie übrigens von einem Literal.
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.
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.
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.
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.
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.
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.