Vorwort Bernd Klein Einführung in Python 3 In einer

Werbung
Vorwort
Bernd Klein
Einführung in Python 3
In einer Woche programmieren lernen
ISBN (Buch): 978-3-446-43547-6
ISBN (E-Book): 978-3-446-43717-3
Weitere Informationen oder Bestellungen unter
http://www.hanser-fachbuch.de/978-3-446-43547-6
sowie im Buchhandel.
© Carl Hanser Verlag, München
Vorwort
Bedingt durch den traumhaften Anstieg der Bedeutung von Python in der Wissenschaft
und Wirtschaft in den letzten Jahren gibt es auch ein wachsendes Interesse an geeigneten Python-Büchern. Gerade für Programmieranfänger besteht die Schwierigkeit darin, ein
geeignetes Buch zu finden. Der unüberlegte Griff ins Bücherregal führt schnell zum Kauf
eines Buches, was zwar viele Vorzüge haben mag, aber für Anfängerinnen und Anfänger
völlig ungeeignet ist.
Dies ist besonders schade, da es sich bei Python ja um eine einfache Programmiersprache
handelt. Das war bereits beim anfänglichen Design der Sprache eines der wesentlichen Ziele ihres „Erfinders” Guido van Rossum, als er Python Anfang der 1990er Jahre am Zentrum
für Mathematik und Informatik (Centrum voor Wiskunde en Informatica) in Amsterdam
entwarf. Python ist einfach, weil es mit erstaunlich wenigen Schlüsselwörtern auskommt
und seine Syntax, also der Aufbau der Sprache, auf Übersichtlichkeit optimiert ist.
Auch im Bereich objektorientierte Programmierung ist Python sehr konsequent, in manchen Dingen sogar konsequenter als Java. So sind in Python alles Objekte, d.h. es gibt keine
primitiven Typen. Selbst Integer und Float-Zahlen sind in Python als Klassen realisiert. Ein
weiterer Unterschied zu Java besteht darin, dass in Python Mehrfachvererbung möglich ist.
Auch Programme in anderen Sprachen lassen sich einfach als Module in Python einbetten.
So kann man beispielsweise zeitkritische Algorithmen in C programmieren und sie dann
in Python einbinden.
Zusammenfassend kann man sagen, dass es sich bei Python um eine Programmiersprache
handelt, die sich bestens zum Einstieg in die Programmierung eignet, aber auch die optimale Lösung für Spezialisten aus zahlreichen Problemfelder ist. In diesem Sinne finden Sie
in diesem Buch den idealen Einstieg.
Brigitte Bauer-Schiewek, Lektorin
Leseprobe
Bernd Klein
Einführung in Python 3
In einer Woche programmieren lernen
ISBN (Buch): 978-3-446-43547-6
ISBN (E-Book): 978-3-446-43717-3
Weitere Informationen oder Bestellungen unter
http://www.hanser-fachbuch.de/978-3-446-43547-6
sowie im Buchhandel.
© Carl Hanser Verlag, München
2
2.1
2.1.1
Kommandos und
Programme
Erste Schritte
Linux
Bei den meisten Linux-Distributionen ist Python bereits vorinstalliert, und damit ist auch
die interaktive Python-Shell direkt verfügbar. Der Interpreter wird üblicherweise im Verzeichnis /usr/bin/ (aber manchmal auch in /usr/local/bin) installiert, aber diese Information benötigen wir jetzt noch nicht.
Der einfachste Weg, um mit Python unter Linux zu arbeiten, besteht darin, dass man zuerst
ein Terminal startet wie beispielsweise ein „xterm” oder ein „gnome-terminal”.
BILD 2.1 Gnome-Terminal
In diesem Terminal – im Bild sehen Sie ein Gnome-Terminal – tippen Sie „python3” ein
und drücken die Eingabetaste. Damit starten Sie die interaktive Python-Shell. Python meldet sich mit Informationen über die installierte Version. Der Interpreter steht nun mit dem
sogenannten Eingabeprompt (»>) für Eingaben bereit. Man kann jetzt beliebigen PythonCode eingeben, der nach dem Quittieren mit der Eingabetaste (Return-Taste) sofort ausgeführt wird.
$ python3
Python 3.2.3 (default, Oct 19 2012, 19:53:57)
10
2 Kommandos und Programme
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Bitte beachten Sie, dass Sie keinesfalls die Ziffer 3 hinter „python” vergessen dürfen. Wenn
Sie nur „python” eingeben, starten Sie Python in einer 2er-Version.
$ python
Python 2.7.3 (default, Sep 26 2012, 21:53:58)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Um die Beispiele in unserem Buch nachvollziehen zu können benötigen Sie jedoch Python
in einer 3er-Version.1
2.1.2
Windows
Unter Windows muss Python erst installiert werden. Die neuesten Versionen findet man
unter www.python.org. Wir haben die Version 3.2.2 von ActiveState installiert.
Python starten unter Windows
1
Also eine Version 3.x, d.h. Python 3.0, 3.1, 3.2, 3.3 usw.
2.2 Herkunft und Bedeutung des Begriffes interaktive Shell
Nachdem Python installiert worden ist, findet man unter „Alle Programme” einen Eintrag
„Python 3.2” oder „Python 3.3”, unter dem sich die Untereinträge „IDLE (Python GUI)” und
„Python (command line)” bzw. „Python Interactive Shell” befinden.
Um die nachfolgenden Beispiele und Übungen nachvollziehen zu können, starten Sie bitte die Python-Kommandozeile, also „Python (command line)” bzw. „Python Interactive
Shell”. Sie erhalten ein schwarzes Terminal-Fenster.
Alternativ kann man auch mit IDLE arbeiten. Dabei handelt es sich um eine Mini-Entwicklungsumgebung, auf die wir hier jedoch nicht eingehen wollen.
2.2
Interaktive Shell
Wenn die Aktivitäten des vorigen Kapitels erfolgreich waren, sollten Sie sich nun sowohl
unter Linux als auch unter Windows in der interaktiven Python-Shell befinden.
Der Begriff „interaktiv” kommt vom lateinischen „inter agere”. Das Verb „agere” bedeutet
unter anderem „tun”, „treiben”, „betreiben”, „handeln”, und „inter” bezeichnet die zeitliche und örtliche Position zu Dingen und Ereignissen, also „zwischen” zwei oder „inmitten”
(oder „unter”) vielen Objekten, Personen oder Ereignissen sein. Also heißt „inter agere” dazwischen handeln. In diesem Sinne steht die interaktive Shell zwischen dem Anwender und
dem Betriebssystem (Linux, Unix, Windows oder anderen) bzw. dem zu interpretierenden
Programm (z.B. Python). Die interaktive Shell steht aber auch zeitlich zwischen den einzelnen Aktionen, d.h. zwischen den einzelnen Befehlen und Kommandos. Der Benutzer gibt
einen Befehl ein, die Shell führt diesen unverzüglich aus, liefert sofort das Ergebnis und
wartet dann auf den nächsten Befehl.
In Englisch steht das Wort „shell” für eine Schale, einen Panzer oder ganz allgemein eine Hülle oder Schutzhülle. „shell” bezeichnet auch ein Schneckenhaus und das Gehäuse,
das eine Muschel umschließt. Ebenso liegt eine Shell auch zwischen einem Betriebssystem und dem Benutzer. Wie eine Muschelschale schützt sie einerseits das Betriebssystem
vor dem Benutzer, und andererseits erspart sie dem Benutzer die Benutzung der „primitiven” und schwer verständlichen Basisfunktionen, indem es ihm komfortable Befehle zur
Kommunikation mit dem Computer zur Verfügung stellt.
Auch die Programmiersprache Python bietet dem Anwender eine komfortable Kommandozeilenschnittstelle, die sogenannte Python-Shell, manchmal auch als interaktive
Python-Shell bezeichnet. Man könnte meinen, dass es sich bei dem Begriff „interaktive
Shell” um eine Tautologie handelt, da ja, so wie oben beschrieben, Shells immer interaktiv
sind. Dies ist jedoch nicht so: Es gibt auch vor allem im Umfeld von Linux und Unix Shells,
die als Subshell aufgerufen werden und nicht interaktiv ausgeführt werden.
2.2.1
Erste Schritte in der interaktiven Shell
Wir nehmen nun an, dass Sie entweder unter Linux oder unter Windows vor einer lauffähigen Python-Shell sitzen, die mit dem blinkendem Cursor hinter dem Prompt „»>” auf Ihre
Eingabe wartet.
11
12
2 Kommandos und Programme
Unsere Experimente mit der Python-Shell starten wir mit der Eingabe eines beliebigen
arithmetischen Ausdrucks wie z.B. „4 * 5.2” oder „4 * 12 / 3”. Ein Ausdruck wird mit dem
Drücken der Eingabetaste (return) sofort ausgeführt, und das Ergebnis wird in der nächsten Zeile ausgegeben:
>>> 4 * 5.3
21.2
>>> 4 * 12 / 3
16.0
>>>
Die interaktive Shell erlaubt eine Bequemlichkeit, die innerhalb eines Python-Skripts nicht
zulässig ist. In einem Programm hätten wir das Ergebnis des obigen Ausdrucks nur mittels
einer print-Anweisung ausgeben können:
>>> print(4 * 5.3)
21.2
Python kennt wie die meisten anderen Programmiersprachen die Regel „Punktrechnung
geht vor Strichrechnung”, wie wir im folgenden Beispiel sehen können:
>>> 1 + (42 * 2)
85
>>> 1 + 42 * 2
85
>>>
>>> (1 + 42) * 2
86
Der jeweils letzte Ausgabewert wird vom Interpreter in einer speziellen Variablen automatisch gespeichert. Der Name der Variable ist einfach ein Unterstrich, also „_”. Das Ergebnis
der letzten Berechnung kann man sich also damit wieder ausgeben lassen:
>>> _
85
>>>
Der Unterstrich kann im Prinzip wie eine normale Variable benutzt werden:
>>> _ * 3
255
>>>
Dies gilt allerdings nicht in einem Python-Skript oder Python-Programm! In einem PythonProgramm hat der Unterstrich nicht diese Bedeutung.
Auch Strings lassen sich mit oder ohne print in der interaktiven Shell ausgeben:
>>> print("Hello World")
Hello World
>>> "Hello World"
'Hello World'
>>>
2.3 Verlassen der Python-Shell
Die Python-Shell bietet noch einen Komfort, den man von den Linux-Shells gewöhnt ist.
Es gibt einen Befehlsstack, in dem alle Befehle der aktuellen Sitzung gespeichert werden.
Mit den Tasten „↑” und „↓” kann man sich in diesem Stack nach unten („↑”), also zu älteren
Befehlen, und nach oben („↓”), also wieder in Richtung neuester Befehl, bewegen.
2.3
Verlassen der Python-Shell
Wir haben zwar gerade erst damit begonnen, in
der Python-Shell „herumzuspielen”, dennoch wollen sicherlich einige das Programm bereits verlassen. Ctrl-C, – was vielen Linux- und Unix-Benutzern
häufig als Erstes einfällt, – funktioniert nicht! Den
Python-Interpreter kann man per Kontrollsequenz
nur mit Ctrl-D wieder verlassen. Alternativ dazu
kann man die Python-Shell mittels Eingabe der
Funktion exit() verlassen. Die Klammern hinter exit
sind ab Python 3 zwingend notwendig.
BILD 2.2 Emergency Exit
Alle Einstellungen wie beispielsweise Variablen oder eingegebene Funktionsdefinitionen
gehen beim Verlassen der Python-Shell verloren und sind beim nächsten Start nicht mehr
vorhanden.
2.4
Benutzung von Variablen
In der Python-Shell kann man auch ganz einfach Variablen benutzen. Wenn Sie genau wissen wollen, was es mit Variablen und Datentypen auf sich hat, empfehlen wir, in Kapitel 4
(Datentypen und Variablen) weiterzulesen.
Das folgende Beispiel wendet sich an Benutzer, die bereits ein wenig Erfahrung mit Programmierung haben. Man kann also ganz einfach Werte in Variablen speichern. Variablennamen bedürfen keiner besonderen Kennzeichnung wie in anderen Sprachen wie zum Beispiel das Dollarzeichen in Perl:
>>> maximal = 124
>>> breite = 94
>>> print(maximal - breite)
30
>>>
13
14
2 Kommandos und Programme
2.5
Mehrzeilige Anweisungen
Bis jetzt haben wir noch nicht über mehrzeilige Anweisungen gesprochen. Anfänger werden hier vielleicht Probleme haben, da noch einige Grundlagen zum Verständnis fehlen,
und sollten deshalb besser mit dem folgenden Kapitel weitermachen.
Wir demonstrieren, wie die interaktive Shell mit mehrzeiligen Anweisungen wie zum Beispiel For-Schleifen umgeht.
>>> l = ["A",42,78,"Just a String"]
>>> for character in l:
...
print(character)
...
A
42
78
Just a String
>>>
Achtung: Nachdem man die Zeile „for character in l:” eingetippt hat, wartet die interaktive Shell im Folgenden auf eingerückte Zeilen. Dies teilt uns die Shell mit einem neuen
Prompt mit: Statt dem gewohnten „>>> ” erhalten wir nun eine Folge von drei Punkten
„... ”. Wir müssen also alle Anweisungen, die mit der Schleife ausgeführt werden sollen, um
die gleiche Anzahl von Leerzeichen einrücken, mindestens jedoch ein Leerzeichen! Wenn
wir fertig sind, müssen wir nach der letzten Code-Zeile zweimal die Eingabetaste drücken,
bevor die Schleife wirklich ausgeführt wird.
2.6
Programme schreiben
Wir haben bisher ein wenig mit der interaktiven Python-Shell herumprobiert, aber
noch kein richtiges Programm geschrieben. Bei der Programmierung ist es generell wichtig, möglichst in kleinen Schritten vorzugehen. Deshalb wird unser erstes Programm in Python auch nur sehr wenig tun. Das Programm soll lediglich einen
kurzen Text ausgeben, nachdem es gestartet worden ist. Für diesen Text wird in fast
allen Einführungen zu Programmiersprachen die Zeichenkette2 „Hallo Welt” oder
auf Englisch „Hello World” verwendet. Wir
wollen dieser Tradition folgen.
2
BILD 2.3 Hallo Welt
Eine Folge von Zeichen wird als „Zeichenkette” oder meistens als „String” bezeichnet.
2.6 Programme schreiben oder schnell mal der Welt “Hallo” sagen
Im Folgenden wollen wir zeigen, was in der Programmiersprache C++ nötig ist, um ein so
kleines Programm zum Laufen zu bringen. Sie können diesen kurzen Exkurs in die Programmiersprache C++ bedenkenlos überspringen. Wir bringen dieses Beispiel nur, damit
man später erkennen kann, wie leicht es ist, in Python im Vergleich zu C++ zu programmieren.
Folgender Programm-Code ist in C++ nötig, um ein Programm zu schreiben, was nach dem
Start nur den Text „Hello World” in einer Zeile ausgibt:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!\n";
return 0;
}
Wenn man dieses Programm in einer Datei gespeichert hat, also z.B. „hello.cpp”, muss man
das Programm kompilieren, um ein lauffähiges Programm zu erhalten.3 Dies geschieht mit
folgendem Befehl, der ein lauffähiges Programm unter dem Namen „hello” erzeugt:
bernd@saturn:~/bodenseo/python/beispiele$ g++ -o hello hello.cpp
Im Folgenden starten wir das Programm „hello” und erhalten die gewünschte Ausgabe:
bernd@saturn:~/bodenseo/python/beispiele$ ./hello
Hello World!
bernd@saturn:~/bodenseo/python/beispiele$
Deutlich einfacher können wir ein solches Programm unter Python erstellen.
Schreiben Sie in einem Editor4 Ihrer Wahl die folgende Zeile und speichern Sie sie unter
dem Namen „hello.py” ab:
print("Hello World")
Unter Linux oder Unix starten wir dieses Programm am einfachsten, wenn wir uns in einem
Terminal in das Verzeichnis begeben, in dem wir die Datei hello.py abgespeichert haben.
Dort können wir dann das Programm mit Kommando „python3 hello.py” ausführen.
Im Folgenden sehen wir dieses Vorgehen inklusive Ergebnis. Dabei nehmen wir an, dass
Sie die Datei in einem Unterverzeichnis python_beispiele Ihres Homeverzeichnisses
abgespeichert hatten:
bernd@venus:~$ cd ~/python_beispiele/
bernd@venus:~/python_beispiele$ python3 hello.py
Hallo Welt
3
4
Näheres zu Compiler, Interpreter, Maschinen und Skriptsprachen erfahren Sie in Kapitel 3 (Bytecode und
Maschinencode).
Unter Windows könnte das beispielsweise „Notepad” sein, unter Linux oder einem anderem Unix-System
empfiehlt sich der vi, emacs, kate oder gedit.
15
16
2 Kommandos und Programme
Unter Windows können wir ähnlich vorgehen. Wir starten erst das Programm „Eingabeaufforderung”. Dort bewegen wir uns in unser Verzeichnis mit den Python-Programmen,
in das wir unser hello.py abgespeichert haben.
Hello World unter Python in Windows-Eingabeaufforderung
Wir haben gesehen, dass die nötige Syntax5 unter Python deutlich geringer ist als unter
C++, d.h. man muss lediglich den Text mit einer print-Funktion aufrufen. Anschließend ist
auch kein explizites Kompilieren6 nötig. Man kann das Programm einfach so starten.
Fragen zum Verständnis:
5
6
■
Wie kann man ein Python-Programm schreiben?
■
Wie startet man ein Python-Programm?
■
Wie kann man das Produkt aus 3.5 und 7.8 am einfachsten mit Python bezeichnen?
Etymologisch leitet sich das Wort Syntax aus dem altgriechischen Wort „syntaksis” ab. „syn” bedeutet „zusammen”, und „taksis” steht für „Reihenfolge” oder „Ordnung”. Unter Syntax versteht man in der Linguistik
die Lehre vom Satzbau, also sozusagen die „zusammen”- oder „gesamt”-Reihenfolge der einzelnen Satzteile. In der Informatik versteht man unter der Syntax einer Programmiersprache die Regeln oder das System
von Regeln, mit denen man gültige Programme der Sprache beschreiben kann.
Man beachte das Wort „explizit”. Beim Start des Programmes wird nämlich implizit gegebenenfalls eine
Kompilierung vorgenommen. Auf diese gehen wir im nächsten Kapitel näher ein.
Stichwortverzeichnis
Bernd Klein
Einführung in Python 3
In einer Woche programmieren lernen
ISBN (Buch): 978-3-446-43547-6
ISBN (E-Book): 978-3-446-43717-3
Weitere Informationen oder Bestellungen unter
http://www.hanser-fachbuch.de/978-3-446-43547-6
sowie im Buchhandel.
© Carl Hanser Verlag, München
Stichwortverzeichnis
∧ bei regulären Ausdrücken 269
. Match eines beliebigen Zeichens 266
$ bei regulären Ausdrücken 269
A
abort 226
abspath 240
access 227
__add__ 403
Allgemeine Klasse → Basisklasse
Anagramm
– als Beispiel einer Permutation 309
Andrew 402
Angestelltenklasse → Personklasse
append 75
Archivdatei erzeugen 251
Arrays 328
– flach machen → NumPy
– konkatenieren → NumPy
– ones() 332
– umdimensionieren → NumPy
– zeros() 332
assertAlmostEqual 207
assertCountEqual 207
AssertEqual 206
assertEqual 207
assertFalse 208
assertGreater 208
assertGreaterEqual 208
assertIn 208
AssertionError 205
assertIs 208
assertIsInstance 209
assertIsNone 209
assertIsNot 209
assertItemsEqual 209
assertLess 208
assertLessEqual 208
assertListEqual 209
assertNotRegexpMatches 209
assertTrue 208
assertTupleEqual 209
assoziative Arrays 33
assoziatives Feld 33
atime 243
Attribute 162
– private 162
– protected 162
– public 162
AttributeError 172
Aufspalten von Zeichenketten 132
Auskellern 75
Ausnahme
– StopIteration 306
Ausnahmebehandlung 149
– except 149
– finally 153
– try 149
Automatentheorie 261
B
Barry 195
basename 241
Bash 212
Basisklasse 169
Bayes-Theorem 367
bedingte Anweisungen 55
Bibliothek 90
Bierdeckelarithmetik 191
Bierdeckelnotation 191
binäre Operatoren 187
Binärsystem 191
Boehm 195
Bourne-Shell 212
Bruch
– kürzen 349
– Kürzungszahl 349
418
Stichwortverzeichnis
Calendar-Klasse 177
CalendarClock-Klasse 177
Caret-Zeichen 267
Cast 24
Casting 24
CaveInt 403 → Neanderthal-Arithmetik
center 144
chdir 227
chmod 227
Chomsky-Grammatik 117
chown 228
chroot 228
clear → Dictionary
CLI 212
Clock-Klasse 177
close 218
Closure 318
Codeblock 59
combinatorics.py 359
commonprefix 241
copy 249 → Dictionary
copy2 249
copyfile 249
copyfileobj 249
copymode 249
copystat 250
copytree 250
count 78, 139
ctime 243
Decorator → Dekorateur
Definition einer Variablen 21
Dekorateur 318
– Beispiel Fakultätsfunktion 320
– Benutzung in Python 319
– zur Implementierung eine Memoisation 320
– zur Überprüfung von Funktionsargumenten
320
deriv 343
derivation 343
Destruktor 160
Dezimalsystem 191
Diamond-Problem 176
Dictionary 33
– aus Listen erzeugen 43
– clear 38
– copy 38
– flache Kopie 38, 101
– fromkeys 38
– get 39
– items 39
– keys 39
– nested Dictionaries 37
– pop 40
– popitem 40
– setdefault 40
– tiefe Kopie 38, 101
– update 41
– verschachtelte Dictionaries 37
dirname 241
doctest 200
Dokumentenklassifikation 365
Donald Michie → Memoisation
Drei-Finger-Regel 340
dup 220
dynamische Attribute 168
dynamische Typdeklaration 23
D
E
Datei 69
– lesen 69
– öffnen 69
– schreiben 71
– zum Schreiben öffnen 71
Dateibaum
– rekursiv durchwandern 240
Dateibearbeitung mit os 215
Dateideskriptor 218, 219
Dateigröße 244
Datenkapselung 157
Datentypen 21
Deadly Diamond of Death 176
Eingabeprompt 9
Einheitsmatrix 339
Einkellern 75
Einschubmethode → Hook-Methode
endliche Automaten 261, 267
erben → Vererbung
errare humanum est 195
erweiterte Zuweisungen 188
Euklidischer Algorithmus 349
except 149
execl 225
execle 226
execlp 225
– Repräsentierung in Python|hyperpage 348
– vollständig gekürzte Form 349
Bruchklasse 347
Bruchrechnen 348
Bulls and Cows 358
bztar-Datei → Archivdatei erzeugen
C
Stichwortverzeichnis
execlpe 226
execv 224
execve 224
execvp 222
execvpe 223
exists 242
expandvars 242
explizite Typumwandlung 24
extend 76
extsep 228
F
Fakultätsfunktion 117
– iterative Lösung 119
– rekursive Implementierung 118
– unter Benutzung eines Dekorateurs 320
Fehler
– Semantik 196
– Syntax 195
Fehlerarten 195
fib → Fibonacci-Modul
fiblist → Fibonacci-Modul
Fibonacci 120
Fibonacci-Folge → Fibonacci-Zahlen
– rekursive Berechnung 126
Fibonacci-Modul 197
– fib-Funktion 197
– fiblist-Funktion 197
Fibonacci-Zahlen
– formale mathematische Definition 120
– Generator 314, 412
– Modul zur Berechnung der Fibonacci-Zahlen
197
– rekursive Berechnung mit Dekorateuren 318
– rekursive Funktion 119
filter 289
finally 153
find 78, 139
Finite State Machine 268
firstn-Generator 312
flache Kopie 38, 101
for-Schleife 62
– optionaler else-Teil 62
– StopIteration 306
– Unterschied zur while-Schleife 63
– Vergleich zu C 62
fork 228, 255
Forking 255
forkpty 228
formale Sprachen 261
fromkeys → Dictionary
Frosch
– Aufgabe mit Summenbildung 66
– Straßenüberquerung 66
frozensets 49
fully qualified 90
functools 294
Funktion 103
Funktionsabschluss 318
G
ganze Zahlen 22
Ganzzahlen 22
Generator
– all_colours() 359
– Allgemein 305
– CLU 305
– Endlosschleife in 307
– firstn 312
– Icon 305
– isclice zur Ausgabe von unendlichen
Generatoren 312
– k-Permuationen aus Zufallspermutation 359
– k-Permutationen 359
– k_permutations() 359
– pair_sum 315
– pendulum 314
– Permutationen 309, 359
– permutations() 359
– round_robin 314
– send-Methode 312
– Werte empfangen 312
– yield 307
– zur Erzeugung von Selektionen 310
Generator-Ausdrücke 313
Generator-Comprehension 302
Generatoren-Abstraktion 302
get → Dictionary
get_archive_formats 251
getatime 243
getcwd 229, 247
getcwdb 229
getegid 229
getenv 213
getenvb 213
geteuid 229
get_exec_path 228
getgid 229
getgroups 229
getloadavg 229
getlogin 230
getmtime 243
getpgid 230
419
420
Stichwortverzeichnis
getpgrp 230
getpid 230
getppid 230
getresgid 230
getresuid 230
getsize 244 → os.path
getter 166
getuid 230
get_unpack_formats 251
ggT 349
Girokonto 170
Gleichungssysteme 340
grafische Veranschaulichung von Matrixwerten
→ Hinton-Diagramm
größter gemeinsamer Teiler 349
Gruppierungen 274
GUI 212
gztar-Datei → Archivdatei erzeugen
H
Hash 33
Hinton-Diagramm 323
Hook-Methode 206
Hooks → Hook-Methode
isdir 245
isfile 245
isinstance 25
islice 312
– als Ersatz für firstn 312
islink 245
islower 145
ismount 246
isspace 145
istitle 145
isupper 145
itemgetter 84
items → Dictionary
__iter__ 306
Iteration
– for-Schleife 305
Iteratoren 305
– for-Schleife 305
itertools 312
– islice 312
J
join 139, 246
Junit 204
I
K
if-Anweisung 55
ignore_patterns 251
implizite Typumwandlung 25
import-Anweisung 90
in
– Dictionaries 36
index 78, 139
index-Funktionen 220
Inheritance → Vererbung
__init__.py 95
inneres Produkt 335
insert 79
Instanz 155
Instanzattribute 168
integ 343
Integer 22
interaktive Shell
– Befehlsstack 13
– Starten unter Linux 9
– Starten unter Windows 10
– Unterstrich 12
inverse Matrix 339
isabs 244
isalnum 145
isalpha 145
isdigit 145
kanonischer Pfad 247
Kapselung 157
Keller 75
Kellerspeicher 75, 188
KeyError 35
keys → Dictionary
kill 230
killpg 231
Klasse 156
– Erzeugen von Objekten 158
– Kopf 158
– Körper 158
– minimale Klasse in Python 158
Klassenattribute 168
– Zähler zum zählen der Objekte 168
Kombination 310
Kombinatorik-Modul 359
Kompilierung von regulären Ausdrücken 280
Komponententest 197
Konstruktor 160
Kontoklasse 158, 170
– mit Unterklassen 170
Kontrollstrukturen 55
Kopieren
– von Unterlisten 100
– von verschachtelten Listen 97
Stichwortverzeichnis
Kreuzprodukt 335, 340
Kuchenklasse 155
Kundenklasse → Personklasse
Kürzen 349
L
lambda 289
Länge eines Vektors 335
Leonardo von Pisa → Fibonacci-Zahlen
lexists 246
Liber Abaci 120
Lieferant → Personklasse
linalg → NumPy
lineare Algebra 340
lineare Gleichungssysteme 340
linesep 231
link 231
Linux 212
– Python unter 9
list
– append 75
– extend 76
– find 78
– index 78
– pop 75
– sort 82
List Comprehension 297
– Kreuzprodukt 299
– pythagoreisches Tripel 299
– Sieb des Eratosthenes 300
– Syntax 298
– Vergleich mit konventionellem Code 298
– Wandlung Celsius in Fahrenheit 299
– Weitere Beispiele 299
– zugrundeliegende Idee 299
list:count 78
list:insert 79
list:remove 77
listdir 231
list_iterator 306
Listen-Abstraktion 297
– Kreuzprodukt 299
– pythagoreisches Tripel 299
– Sieb des Eratosthenes 300
– Syntax 298
– Vergleich mit konventionellem Code 298
– Wandlung Celsius in Fahrenheit 299
– Weitere Beispiele 299
– zugrundeliegende Idee 299
ljust 144
Lösung von Gleichungssystemen 340
lower 143
lseek 219
lstat 231
M
__main__ 197
major 231
make_archive 251
makedev 232
makedirs 232
map 289, 292
Mapping 33
Marvin 402
Mastermind 357
Match eines beliebigen Zeichens 266
Match-Objekte 274
Matching-Problem 264
– Over Matching 264
– Under Matching 264
MATLAB 323
Matrix-Klasse → NumPy
Matrix-Produkt → NumPy
Matrizenaddition 333
Matrizenmultiplikation 333, 337
Matrizensubtraktion 333
maxsplit
– split 132
Mehrfachvererbung 174
– Beispiel CalendarClock 177
– Tiefensuche 174
Memoisation 123, 317
Memoization → Memoisation
Memoize 319
memoize-Funktion 318
Menge 47
Mengen-Abstraktion 301
Mengenlehre 47
Methode 155, 159
– Overloading → Überladen
– Overwriting → Überschreiben
– Überladen 171
– Überschreiben 171
– Unterschiede zur Funktion 159
minor 231
mkdir 232
mkfifo 233
Modul
– dir() 93
– Dokumentation 94
– dynamisch geladene C-Module 91
– eigene Module schreiben 93
– Inhalt 93
– lokal 90
421
422
Stichwortverzeichnis
– math 90
– Modularten 91
– Namensraum 90
– re 263
– Suchpfad 92
modulare Programmierung 89
modulares Design 89
Modularisierung 89
Modultest 197
Modultests
– unter Benutzung von __name__ 197
Monty Python 34
move 252
mtime 243
__mul__ 403
N
Naiver Bayes-Klassifikator 366, 367
__name__ 197
Namensraum
– umbenennen 91
Neanderthal-Arithmetik 191
Nested Dictionaries 37
next 306
nice 233
Noam Chomsky 117
normcase 246
normpath 247
Nullstellen berechnen 343
Numarray → NumPy
Numeric → NumPy
Numeric Python → NumPy
NumPy 323
– Array mit Nullen und Einsen initialisieren
332
– Array neue Dimension hinzufügen 332
– Arrays 325
– Arrays flach machen 327
– Arrays konkatenieren 330
– Arrays umdimensionieren 328
– deriv 343
– Drei-Finger-Regel 340
– Einheitsmatrix 339
– eye 339
– Gleichungssysteme 340
– inneres Produkt 335
– integ 343
– inv 339
– inverse Matrix 339
– Kreuzprodukt 335, 340
– Länge eines Vektors 335
– linalg 340
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
lineare Algebra 340
lineare Gleichungssysteme 340
Lösung von Gleichungssystemen 340
Matrix-Klasse 336
Matrix-Produkt 337
Matrixarithmetik 333
Matrizenaddition 333
Matrizenmultiplikation 333, 337
Matrizensubtraktion 333
Nullstellen 341
Nullstellen berechnen 343
ones() 332
ones_like() 333
polynomial-Paket 341
Punktprodukt 335
Rechtssystem 340
roots 343
Skalarprodukt 335
Vektoraddition 334
Vektorprodukt 340
Vektorsubtraktion 334
Winkel zwischen Vektoren 335
zeros() 332
zeros_like() 333
O
Oberklasse 169
object 169
Objekt 155
Objektorientierte Programmiersprache 155
Objektorientierte Programmierung 155
ones_like() 333
OOP 155
– Datenkapselung 157
– Kapselung 157
– Kuchenklasse 155
open 216
open() 69
openpty 219
operator-Modul 84
– itemgetter 84
Operator-Überladung 187
Operatoren überladen
– binäre Operatoren 187
– erweiterte Zuweisungen 188
– unäre Operatoren 188
os
– abort 226
– access 227
– chdir 227
– chmod 227
– chown 228
Stichwortverzeichnis
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
chroot 228
close 218
dup 220
execl 225
execle 226
execlp 225
execlpe 226
execv 224
execve 224
execvp 222
execvpe 223
extsep 228
fork 228
forkpty 228
getcwd 229
getcwdb 229
getegid 229
getenv 213
getenvb 213
geteuid 229
get_exec_path 228
getgid 229
getgroups 229
getloadavg 229
getlogin 230
getpgid 230
getpgrp 230
getpid 230
getppid 230
getresgid 230
getresuid 230
getuid 230
kill 230
killpg 231
linesep 231
link 231
listdir 231
lseek 219
lstat 231
major 231
makedev 232
makedirs 232
minor 231
mkdir 232
mkfifo 233
nice 233
open 216
openpty 219
popen 233
putenv 214
read 218
readlink 235
– remove 235
– removedirs 235
– rename 236
– renames 236
– rmdir 237
– sep 241
– setegid 237
– seteuid 237
– setgid 237
– setgroups 229
– setpgid 237
– setpgrp 237
– setregid 237
– setresgid 237
– setresuid 237
– setreuid 237
– setsid 237
– setuid 237
– stat 237
– stat_float_times 238
– strerror 238
– supports_bytes_environ 215
– symlink 238
– sysconf 239
– system 239
– times 239
– umask 239
– uname 239
– unlink 239
– unsetenv 215
– urandom 239
– utime 240
– wait 240
– wait3 240
– waitpid 240
– walk 240
– write 215
os-Modul 212, 226
os.path 240
os.python
– abspath 240
– basename 241
– commonprefix 241
– dirname 241
– exists 242
– expandvars 242
– getatime 243
– getmtime 243
– getsize 244
– isabs 244
– isdir 245
– isfile 245
423
424
Stichwortverzeichnis
– islink 245
– ismount 246
– join 246
– lexists 246
– normcase 246
– normpath 247
– realpath 247
– relpath 247
– samefile 248
– split 248
– splitdrive 248
– splitext 248
Over Matching 264
Overloading → Überladen
overloading 172
Overwriting → Überschreiben
P
Paket 95
Paketkonzept 95
Parameterliste 104
partion 139
Pascalsches Dreieck 124
– Fibonacci-Zahlen 125
peek 75
Permutationen 309
– mit Wiederholungen 309
– ohne Wiederholungen 309
Permutations-Generator 309
Personklasse → Vererbung
Pfadname
– absolut 244
– relativ 244
Polymorphismus 185
Polynome 341
pop 75, 188 → Dictionary
popen 233
popitem → Dictionary
Private Attribute
– lesender und schreibender Zugriff mittels
Methoden 166
Programmiersprache
– Unterschied zu Skriptsprache 17
Properties 166
Punktprodukt 335
push 75, 188
putenv 214
Q
Quantoren 272
R
random-Methode
– sample 311
read 218
readlink 235
re-Modul 263
realpath 247
Rechtssystem 340
reduce 294
Regeln zur Interpretation von römischen
Zahlen 385
register_archive_format 253
register_unpack_format 253
reguläre Ausdrücke 261
– Alternativen 279
– Anfang eines Strings matchen 269
– beliebiges Zeichen matchen 266
– compile 280
– Ende eines Strings matchen 269
– Kompilierung 280
– optionale Teile 271
– Qunatoren 272
– Teilstringsuche 263
– Überlappungen 263
– vordefinierte Zeichenklassen 268
– Wiederholungen von Teilausdrücken 272
– Zeichenauswahl 266
reguläre Auswahl
– Caret-Zeichen, Zeichenklasse 267
reguläre Mengen 261
reguläre Sprachen 261
Rekursion 117
– Beispiel aus der natürlichen Sprache 117
rekursiv → Rekursion
rekursive Funktion 117, 118
relpath 247
remove 77, 235
removedirs 235
rename 236
renames 236
replace 142
__repr__ 400
– Unterschied zu __str__ 400
rfind 139
rindex 139
rjust 144
rmdir 237
rmtree 253
Robot-Klasse 400
Roboterklasse 189
römische Zahlen 65
roots 343
Stichwortverzeichnis
Rossum, Guido van 289
round_robin 314
rsplit 136
– Folge von Trennzeichen 137
rstrip 143
Rückwärtsreferenzen 274
S
samefile 248
sample 311
Schachbrett mit Weizenkörnern 66
Schaltjahre 58
Schleifen 55, 59
– Endekriterium 59
– for-Schleife 62
– Schleifendurchlauf 59
– Schleifenkopf 59
– Schleifenkörper 59
– Schleifenzähler 59
– while-Schleife 60
Schleifenzähler 59
Schlüssel
– Dictionary 33
– zulässige Typen 36
Scientific Python → SciPy
SciPy 323
Sekunden
– Additon zu Uhrzeiten 58
Semantik 196
– Fehler 196
semantische Fehler 196
send-Methode 312
sep 241
set 47
set comprehension 301
setdefault → Dictionary
setegid 237
seteuid 237
setgid 237
setgroups 229
setpgid 237
setpgrp 237
setregid 237
setresgid 237
setresuid 237
setreuid 237
sets
– copy 50
– difference_update 51
– discard 51
– intersection 52
– isdisjoint 52
– issubset 53
– issuperset 53
– Operationen auf sets 49
– pop 53
– remove 52
setsid 237
setter 166
setuid 237
setUp-Methode 206
Shell 211
– Bash 212
– Bourne 212
– C-Shell 212
– CLI 212
– GUI 212
– Herkunft und Bedeutung des Begriffes 211
Shihram 66
shutil
– copy 249
– copy2 249
– copyfile 249
– copyfileobj 249
– copymode 249
– copystat 250
– copytree 250
– get_archive_formats 251
– get_unpack_formats 251
– ignore_patterns 251
– make_archive 251
– move 252
– register_archive_format 253
– register_unpack_format 253
– rmtree 253
– unpack_archive 253
– unregister_archive 254
– unregister_unpack_format 254
shutil-Modul 249
Sieb des Eratosthenes 300
– Rekursive Berechnung 125
– Rekursive Funktion mit Mengen-Abstraktion
301
Simula 67 155
Skalarprodukt 335
Skriptsprache
– Unterschied zu Programmiersprache 17
sort 82
– eigene Sortierfunktionen 83
– reverse 83
– Umkehrung der Sortierreihenfolge 83
sorted 82
Sparbuch 170
spezialisierte Klasse → Unterklasse
425
426
Stichwortverzeichnis
splice 192
split 132, 248
– Folge von Trennzeichen 137
– maxsplit 132
splitdrive 248
splitext 248
splitlines 138
Sprachfamilie 261
Stack 75
– Stapelspeicher 75
Standardbibliothek 90
Standardklassen als Basisklassen 188
Stapelspeicher 75, 188
stat 237
stat_float_times 238
statische Attribute 168
statische Typdeklaration 23
Stephen Cole Kleene 261
StopIteration 306
__str__ 349, 400
– Unterschied zu __repr__ 400
strerror 238
Strings
– Suchen und Ersetzen 142
String-Tests 145
Stringmethoden
– Alles in Großbuchstaben 143
– Alles in Kleinbuchstaben 143
– capitalize 143
– center 144
– count 139
– find 139
– index 139
– isalnum 145
– isalpha 145
– isdigit 145
– islower 145
– isspace 145
– istitle 145
– isupper 145
– ljust 144
– lower 143
– replace 142
– rfind 139
– rindex 139
– rjust 144
– rstrip 143
– String-Tests 145
– strip 143
– title 143
– upper 143
– zfill 144
strip 143
Strukturierungselement 103
__sub__ 403
Subklasse → Unterklasse
Suchen und Ersetzen 142
Suchen von Teilstrings 139
Suchstrategie bei Mehrfachvererbung 174
Summe von n Zahlen 60
– Berechnung mit while-Schleife 60
SUnit 204
supports_bytes_environ 215
symlink 238, 245
syntaktische Fehler 195
Syntax 195
– Fehler 195
Syntaxfehler 195
sysconf 239
system 239
Systemprogrammierung 211
T
tar-Datei → Archivdatei erzeugen
TDD → test-driven development
tearDown-Methode 206
Tests 195
test first development 204
test-driven development 204
TestCase 206
– Methoden 206
– setUp-Methode 206
– tearDown-Methode 206
testCase 204
Testgesteuerte Entwicklung 204
Testgetriebene Entwicklung 202, 204
Testmethoden 206
Textklassifikation 365
Textverarbeitung 131
Theoretische Informatik 261
tiefe Kopie 38, 101
Tiefensuche 174
times 239
__truediv__ 403
try 149
Tupel
– leere 80
– mit einem Element 80
– Packing 80
– Unpacking 80
type 25
type conversion 24
TypeError 199
– unhashable type 37
Stichwortverzeichnis
Typumwandlung 24
– explizit 24
– implizit 25
U
Überladen 171
– von Methoden 185
Überlappungen 263
Überschreiben 171
umask 239
Umgebungsvariablen 213
uname 239
unäre Operatoren 188
Unärsystem 191
Unary System → Unärsystem
Under Matching 264
unhashable type 37
unittest 204 → Modultest
Unix 212
unlink 239
unpack_archive 253
unregister_archive_format 254
unregister_unpack_format 254
unsetenv 215
Unterklasse 156, 169
Unterstrich
– Bedeutung in der interaktiven Shell 12
update → Dictionary
upper 143
urandom 239
utime 240
V
Variablen 21
Variation 310
Vektoraddition 334
Vektorprodukt 340
Vektorsubtraktion 334
Vererbung 158, 169
– Beispiel Angestelltenklasse, die von Person
erbt 169
– Beispiel Kundenklasse, die von Person erbt
169
– Beispiel Lieferantenklasse, die von Person
erbt 169
– Beispiel Personenklasse 169
Vererbungsbaum 174
verschachtelte Dictionaries 37
Verzeichnis löschen 237
Verzweigungen 55
Vollstandige Rekursion 117
W
wait 240
wait3 240
waitpid 240
walk 240
Weizenkornaufgabe 66
while-Schleife 60
– optionaler else-Teil 61
Winkel zwischen Vektoren 335
write 215
Y
yield 307
– im Vergleich zur return-Anweisung 307
Z
Zahlenratespiel 61
Zeichenauswahl 266
Zeitrechnung 58
zeros_like() 333
zfill 144
zip-Datei → Archivdatei erzeugen
Zufallspermutation 359
Zustandsautomat 268
Zustandsmaschine 268
Zuweisung 21
427
Herunterladen