Kalista | Python 3 – Einsteigen und Durchstarten | E-Book | sack.de
E-Book

E-Book, Deutsch, 516 Seiten

Kalista Python 3 – Einsteigen und Durchstarten

Python lernen für Anfänger und Umsteiger. Inkl. Kapitel zu Git und Minecraft Pi
1. Auflage 2018
ISBN: 978-3-446-45689-1
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark

Python lernen für Anfänger und Umsteiger. Inkl. Kapitel zu Git und Minecraft Pi

E-Book, Deutsch, 516 Seiten

ISBN: 978-3-446-45689-1
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark



Der fundierte Einstieg in die Python-Programmierung!
•Anschauliche Programmierbeispiele z.B. zu Minecraft auf dem Raspberry Pi helfen Dir beim Durchstarten.
•Anhand von Übungscode lernst Du, wie Du typische Fehler findest, behebst und künftig vermeidest.
•Garantierter Lernerfolg durch: Aufgabenstellung - Tipps für die Lösung - Muster-lösung
Du möchtest beim Python-Lernen schnell vorankommen auch noch Spaß dabei haben? Dann ist dieses Buch genau richtig für Dich. In lockerer Sprache führt Dich Heiko Kalista durch die Grundlagen und fortgeschrittenen Techniken von Python 3.
Jedes Kapitel schließt mit einer kurzen Zusammenfassung, so dass du auch nach einer längeren Pause schnell ins Thema zurückfindest und das Buch auch als Nachschlagewerk nutzen kannst.
Weiterführende Themen wie Debugging und Versionskontrolle mit Git zeigen Dir, wie Du auch größere Projekte erfolgreich umsetzt.
Mit zusätzlichen Aufgaben, Fehlerquelltexten und -lösungen vertiefst Du Dein erworbenes Wissen und schaffst die Basis, um erfolgreich stabile Programme zu entwickeln.
AUS DEM INHALT
•Grundlagen
•Schleifen und Bedingungen
•Funktionen
•Klassen/Objektorientierung
•Container
•Ausnahmebehandlung mit Exceptions
•Module und Pakete
•Dateien und Dateisystem
•GUI-Programmierung mit tkinter
•Debugging - Fehler aufspüren und beseitigen
•Versionsverwaltung mit Git
•Minecraft auf dem Raspberry Pi
Kalista Python 3 – Einsteigen und Durchstarten jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1;Inhalt;6
2;Vorwort;16
3;1 Grundlagen;20
3.1;1.1 Hältst Du das richtige Buch in den Händen?;20
3.2;1.2 Dieses Buch bricht mit einigen Konventionen!;21
3.3;1.3 Die Arbeit mit diesem Buch;22
3.4;1.4 Das Kapitel zu Minecraft;23
3.5;1.5 Das Begleitmaterial zum Buch;23
3.6;1.6 Anregungen? Kritik? Forum?;24
3.7;1.7 Die Geschichte von Python in 120 Wörtern;24
3.8;1.8 Was kann man mit Python machen (und was nicht)?;25
3.9;1.9 Interpreter vs. Compiler;26
3.10;1.10 Python 2.7 oder 3.7?;27
3.11;1.11 Die Entwicklungsumgebung PyCharm;28
3.11.1;1.11.1 Alternativen zu PyCharm;29
3.12;1.12 Python-Interpreter installieren;29
3.12.1;1.12.1 Python-Interpreter unter Windows installieren;30
3.12.2;1.12.2 Python-Interpreter unter macOS installieren;31
3.12.3;1.12.3 Python-Interpreter unter Linux installieren;31
3.12.4;1.12.4 PyCharm unter Windows installieren;32
3.12.5;1.12.5 PyCharm unter macOS installieren;32
3.12.6;1.12.6 PyCharm unter Linux installieren;33
3.12.7;1.12.7 PyCharm einrichten;34
3.13;1.13 Genug geredet, los gehts!;36
3.13.1;1.13.1 Das erste Programm eingeben;37
3.13.2;1.13.2 Ausführen des ersten Beispiels;39
3.13.3;1.13.3 Laden der Beispiele;39
3.13.4;1.13.4 Der Quelltext im Detail;41
3.13.5;1.13.5 Kommentare im Detail;42
3.14;1.14 PEP8 – um sie ewig zu binden;44
3.15;1.15 Python-Programme ohne Entwicklungsumgebung starten;46
3.15.1;1.15.1 Python-Programme unter Windows starten;46
3.15.2;1.15.2 Python-Programme unter Linux oder macOS starten;47
3.16;1.16 Python interaktiv;48
3.17;1.17 Aufgabenstellung;50
3.18;1.18 Kurz & knapp;50
4;2 Variablen;52
4.1;2.1 Was sind Variablen?;52
4.2;2.2 Statisch typisiert vs. dynamisch typisiert;53
4.3;2.3 Einige Details vorab – Variablen sind auch nur Namen;55
4.4;2.4 Richtlinien für Variablennamen;57
4.4.1;2.4.1 Von Kamelen, Schlangen und Pascal;57
4.4.2;2.4.2 Sinnvolle Variablennamen;58
4.5;2.5 Rechnen mit Variablen;59
4.5.1;2.5.1 Verkürzte Schreibweise bei Rechenoperationen;60
4.5.2;2.5.2 Gibt es noch weitere Datentypen?;61
4.5.3;2.5.3 Konvertierung von Datentypen;62
4.5.4;2.5.4 Besonderheiten bei der Konvertierung von Datentypen;63
4.6;2.6 Formatierte Ausgabe mit print();64
4.7;2.7 Genauigkeit von Fließkommazahlen;66
4.7.1;2.7.1 Formatierte Ausgabe von Fließkommazahlen;67
4.8;2.8 Den ganzzahligen Rest einer Division bestimmen;68
4.9;2.9 Konstanten, Konventionen und Restriktionen;69
4.10;2.10 Fehlerquelltext;70
4.10.1;2.10.1 Was ist die Aufgabe des Programms?;71
4.10.2;2.10.2 Lösungsvorschlag;71
4.10.3;2.10.3 Die gemeinen Kleinigkeiten;73
4.11;2.11 Aufgabenstellung;74
4.11.1;2.11.1 Einige Tipps;74
4.11.2;2.11.2 Lösung zur Aufgabenstellung;75
4.12;2.12 Kurz & knapp;76
5;3 Schleifen und Bedingungen;78
5.1;3.1 Was sind Schleifen und Bedingungen?;78
5.2;3.2 Die if-Bedingung;79
5.2.1;3.2.1 Blöcke und Einrückungen;80
5.2.2;3.2.2 Arbeit sparen mit else;81
5.2.3;3.2.3 elif;83
5.3;3.3 Der Platzhalter pass;85
5.4;3.4 Blöcke im interaktiven Modus;86
5.5;3.5 Logische Operatoren;86
5.6;3.6 PyCharm – Korrekturvorschläge übernehmen;89
5.7;3.7 while-Schleifen;90
5.7.1;3.7.1 Eine Schleife mit break vorzeitig beenden;91
5.7.2;3.7.2 continue in while-Schleifen;93
5.7.3;3.7.3 while-else;94
5.8;3.8 for-Schleifen;95
5.8.1;3.8.1 Eine einfache Zählschleife;96
5.8.2;3.8.2 Ein Wort zu Schleifenvariablen;97
5.8.3;3.8.3 Die Funktion range() im Detail;98
5.8.4;3.8.4 break und continue in for-Schleifen;99
5.8.5;3.8.5 Sonderfall Unterstrich: die Wegwerfvariable;100
5.9;3.9 Ein kurzer Abstecher: Exceptions;101
5.10;3.10 Fehlerquelltext;102
5.10.1;3.10.1 Was ist die Aufgabe des Programms?;103
5.10.2;3.10.2 Lösung zum Fehlerquelltext;104
5.11;3.11 Aufgabenstellung;105
5.11.1;3.11.1 Einige Tipps;106
5.11.2;3.11.2 Lösungsvorschlag;107
5.12;3.12 Ein umfangreicheres Beispiel: Zahlenraten;108
5.12.1;3.12.1 Die Hauptschleife;111
5.12.2;3.12.2 Ein neues Spiel starten;111
5.12.3;3.12.3 Abfrage des Schwierigkeitsgrades und Beenden des Spiels;112
5.13;3.13 Kurz & knapp;112
6;4 Funktionen;116
6.1;4.1 Was sind Funktionen?;116
6.2;4.2 Eine einfache Funktion definieren;116
6.3;4.3 Parameter, Argumente und Rückgabewert;118
6.4;4.4 Weitere Möglichkeiten, Funktionen aufzurufen;120
6.5;4.5 Globale und lokale Variablen;122
6.5.1;4.5.1 Ein bisschen mehr Verwirrung, bitte!;124
6.5.2;4.5.2 Das Schlüsselwort global;125
6.5.3;4.5.3 Auch Parameter sind lokal;127
6.5.4;4.5.4 Ein Wort zu globalen Variablen;128
6.5.5;4.5.5 Von Schatten und Hauptprogrammen;128
6.6;4.6 Standardwerte für Parameter;132
6.7;4.7 Schlüsselwortparameter;133
6.8;4.8 Wann sollten Funktionen zum Einsatz kommen?;135
6.9;4.9 Aufgabenstellung;136
6.9.1;4.9.1 Lösung zur Aufgabenstellung;137
6.10;4.10 Vorgehensweise bei größeren Projekten;140
6.11;4.11 Rekursion;141
6.12;4.12 Fehlerquelltext;142
6.12.1;4.12.1 Was ist die Aufgabe des Programms?;143
6.12.2;4.12.2 Lösung zum Fehlerquelltext;144
6.13;4.13 Kurz & knapp;146
7;5 Klassen;150
7.1;5.1 Was ist Objektorientierung?;150
7.2;5.2 Eine einfache Klasse definieren;151
7.2.1;5.2.1 Aufbau einer Klasse;152
7.2.2;5.2.2 Erzeugen von Objekten;153
7.2.3;5.2.3 Verwenden der Objekte;154
7.3;5.3 Kontrollierter Zugriff auf Attribute: Properties;155
7.3.1;5.3.1 Getter;155
7.3.2;5.3.2 Setter;158
7.3.3;5.3.3 Wann sollten Attribute und wann Properties verwendet werden?;159
7.3.4;5.3.4 Nachträgliches Umstellen auf Properties;160
7.4;5.4 Dynamische Attribute;161
7.5;5.5 Klassenattribute;164
7.5.1;5.5.1 Stolpersteine bei Klassenattributen;166
7.6;5.6 Statische Methoden;168
7.7;5.7 Zwischenstand: Braucht man das wirklich?;170
7.8;5.8 Aufgabenstellung;171
7.8.1;5.8.1 Einige Tipps;172
7.8.2;5.8.2 Lösungsvorschlag;173
7.9;5.9 Das Gleiche ist nicht dasselbe;175
7.9.1;5.9.1 Für Fortgeschrittene: Parameterübergabe im Detail;178
7.10;5.10 None;180
7.11;5.11 Vererbung;182
7.11.1;5.11.1 Ein einfaches Beispiel;183
7.11.2;5.11.2 Überschreiben von Methoden;185
7.12;5.12 Wie das Smartphone erfunden wurde – oder: Mehrfachvererbung;190
7.13;5.13 Für Fortgeschrittene: Binden von Methoden;193
7.13.1;5.13.1 Ein Blick hinter die Kulissen;193
7.13.2;5.13.2 Klassen um eigene Funktionen erweitern;195
7.13.3;5.13.3 Statische Methoden und instanzbezogene Bindung;197
7.14;5.14 Überschreiben der Methode __str__();201
7.15;5.15 Und wo ist der Fehlerquelltext?;202
7.16;5.16 Kurz & knapp;202
8;6 Container;208
8.1;6.1 Was sind Container?;208
8.1.1;6.1.1 Eine Anmerkung, bevor es losgeht;208
8.2;6.2 Listen;209
8.2.1;6.2.1 Listen erzeugen und auf Elemente zugreifen;209
8.2.2;6.2.2 Listen dynamisch erzeugen;210
8.2.3;6.2.3 Elemente löschen oder ersetzen;212
8.2.4;6.2.4 Aufgabenstellung;215
8.2.4.1;6.2.4.1 Einige Tipps;216
8.2.4.2;6.2.4.2 Lösung zur Aufgabenstellung;216
8.2.5;6.2.5 Sortieren von Listen;217
8.2.5.1;6.2.5.1 Eigene Sortierfunktionen;219
8.2.5.2;6.2.5.2 Eine weitere Möglichkeit der Sortierung: sorted;221
8.2.5.3;6.2.5.3 Für Fortgeschrittene: lambda – anonyme Funktionen;222
8.2.6;6.2.6 Listen verknüpfen;225
8.2.7;6.2.7 Nicht nur für Fortgeschrittene: tiefes und flaches Kopieren;226
8.3;6.3 Tupel;228
8.3.1;6.3.1 Unterschiede zu Listen;228
8.3.2;6.3.2 Vorsicht: Instanzen in Tupeln können geändert werden;230
8.3.3;6.3.3 Mehrere Rückgabewerte mit Tupeln;231
8.3.4;6.3.4 Für Fortgeschrittene: namedtuple;233
8.4;6.4 Strings;235
8.4.1;6.4.1 Für Fortgeschrittene: Darum sind Strings unveränderlich;236
8.4.2;6.4.2 Slicing;238
8.4.3;6.4.3 Arbeiten mit Strings;240
8.4.4;6.4.4 Strings verbinden;240
8.4.5;6.4.5 Zerlegen und wieder zusammensetzen: split und join;242
8.4.6;6.4.6 Strings „aufbereiten“;244
8.4.7;6.4.7 Ändern der Groß- und Kleinschreibung;246
8.4.8;6.4.8 Strings durchsuchen;247
8.4.9;6.4.9 Aufgabenstellung;249
8.4.9.1;6.4.9.1 Einige Tipps;250
8.4.9.2;6.4.9.2 Lösungsvorschlag;250
8.4.10;6.4.10 Ersetzungen durchführen;252
8.5;6.5 Dictionaries;254
8.5.1;6.5.1 Grundlagen von Dictionaries;254
8.5.2;6.5.2 Vorsicht beim Zugriff!;255
8.5.3;6.5.3 Dictionaries durchlaufen und verändern;257
8.5.4;6.5.4 Elemente aus einem Dictionary entfernen;259
8.6;6.6 Fehlerquelltext;261
8.6.1;6.6.1 Was ist die Aufgabe des Programms?;261
8.6.2;6.6.2 Lösung zum Fehlerquelltext;262
8.7;6.7 Sets und Frozensets;264
8.7.1;6.7.1 Einfache Sets/Frozensets erzeugen;264
8.7.2;6.7.2 Sets: Elemente hinzufügen und entfernen;266
8.7.3;6.7.3 Mengenoperationen;267
8.8;6.8 Kurz & knapp;271
9;7 Exceptions;280
9.1;7.1 Was sind Exceptions?;280
9.2;7.2 Fehler? Die passieren mir doch nicht!;280
9.3;7.3 Die Mechanik von Exceptions;282
9.4;7.4 Abfangen unterschiedlicher Exceptions;284
9.5;7.5 Alle Exceptions fangen;286
9.6;7.6 Eigene Exceptions;288
9.7;7.7 else und finally;291
9.8;7.8 Einige allgemeine Tipps;294
9.9;7.9 Kurz & knapp;298
10;8 Module und Pakete;302
10.1;8.1 Module;302
10.1.1;8.1.1 Grundlagen;303
10.1.2;8.1.2 Dokumentation von Modulen;305
10.1.3;8.1.3 Umbenennen eines Namensraums;307
10.1.4;8.1.4 Selektives Importieren;308
10.1.5;8.1.5 Namensräume haben ihren Sinn;309
10.1.6;8.1.6 Batteries included!;309
10.1.7;8.1.7 Reihenfolge beim Importieren;310
10.1.8;8.1.8 Eigene Module in mehreren Projekten nutzen;311
10.1.9;8.1.9 Tipps für das Schreiben von Modulen;311
10.1.10;8.1.10 Automatische Ausführung beim Import verhindern;313
10.2;8.2 Pakete;314
10.2.1;8.2.1 Importieren von Modulen aus Paketen;315
10.2.2;8.2.2 Reguläre Pakete;316
10.2.3;8.2.3 Namespace Packages;317
10.2.4;8.2.4 Unterscheidung der Paketarten;318
10.3;8.3 Kurz & knapp;319
11;9 Dateien und Dateisystem;322
11.1;9.1 Lesen und Schreiben von Dateien;322
11.1.1;9.1.1 Eine einfache Textdatei auslesen;323
11.1.2;9.1.2 Fehler beim Öffnen von Dateien;324
11.1.3;9.1.3 Eine Datei schrittweise auslesen;325
11.1.4;9.1.4 Zeilenweises Auslesen von Textdateien;327
11.1.5;9.1.5 Textdateien schreiben;328
11.1.6;9.1.6 Übersicht möglicher Modi der Funktion open();330
11.1.7;9.1.7 Aufgabenstellung;331
11.2;9.2 Dateien und Dateisystem;331
11.2.1;9.2.1 Verzeichnisse;332
11.2.2;9.2.2 Pfade und Prüfung auf deren Existenz;333
11.2.3;9.2.3 Pfade und Plattformunabhängigkeit;335
11.2.4;9.2.4 Verzeichnisse und Dateien erzeugen und löschen;336
11.2.5;9.2.5 Verzeichnisstrukturen erzeugen und löschen;339
11.2.6;9.2.6 Umbenennen von Verzeichnissen und Dateien;341
11.2.7;9.2.7 Kopieren und Verschieben;343
11.3;9.3 Kurz & knapp;345
12;10 GUI-Programmierung mit tkinter;350
12.1;10.1 Warum gerade tkinter?;350
12.2;10.2 Die Layout-Manager;351
12.2.1;10.2.1 Absolute Positionierung;351
12.2.2;10.2.2 Der pack-Manager;352
12.2.3;10.2.3 Der grid-Manager;357
12.2.4;10.2.4 Welcher Manager soll es sein?;359
12.3;10.3 Flexible Fenstergröße;360
12.4;10.4 Konfiguration von Widgets;363
12.5;10.5 Steuerelemente im Detail;365
12.5.1;10.5.1 Buttons;365
12.5.2;10.5.2 Kontrollvariablen;367
12.5.3;10.5.3 Eingabefelder;368
12.5.4;10.5.4 Textboxen;369
12.5.5;10.5.5 Checkboxen;373
12.5.6;10.5.6 Radiobuttons;375
12.5.7;10.5.7 Aufgabenstellung;376
12.5.8;10.5.8 Lösungsvorschlag;377
12.5.9;10.5.9 Listboxen;378
12.5.10;10.5.10 Listbox mit Scrollbalken;381
12.6;10.6 Fehlerquelltext;382
12.6.1;10.6.1 Was ist die Aufgabe des Programms?;382
12.6.2;10.6.2 Lösung zum Fehlerquelltext;383
12.7;10.7 Dialogfenster;385
12.8;10.8 Menüs;388
12.8.1;10.8.1 Einfache Menüs;388
12.8.2;10.8.2 Untermenüs;389
12.9;10.9 Kurz & knapp;391
13;11 Debugging;396
13.1;11.1 Was ist ein Debugger?;397
13.2;11.2 Eine einfache Fehlersuche;397
13.2.1;11.2.1 Haltepunkte setzen und entfernen;398
13.2.2;11.2.2 Das Programm durchlaufen und Werte betrachten;399
13.2.3;11.2.3 Geht es auch ohne Haltepunkte?;402
13.2.4;11.2.4 Interaktive Fehlersuche mit der Python-Konsole;403
13.3;11.3 Debuggen von Funktionen und Methoden;405
13.3.1;11.3.1 In Funktionen springen;406
13.3.2;11.3.2 Abschnitte überspringen und Funktionen verlassen;407
13.3.3;11.3.3 Clever springen;408
13.4;11.4 Watches;409
13.5;11.5 Haltepunkte im Detail;411
13.5.1;11.5.1 Ein Beispiel zum Experimentieren;411
13.5.2;11.5.2 Verwalten von Haltepunkten;412
13.5.3;11.5.3 Unterbrechen oder nicht?;416
13.5.4;11.5.4 Bedingte Haltepunkte;416
13.5.5;11.5.5 Protokollierung;417
13.5.6;11.5.6 Temporäre Haltepunkte;418
13.5.7;11.5.7 Verkettete Haltepunkte;419
13.5.8;11.5.8 Haltepunkte für Exceptions;419
13.5.9;11.5.9 Kombination der Optionen;420
13.6;11.6 Einsatz in der Praxis;421
14;12 Versionsverwaltung mit Git;422
14.1;12.1 Der vermeintlich leichte Weg;422
14.2;12.2 Wie funktionieren Versionskontrollsysteme?;423
14.2.1;12.2.1 Verallgemeinerte Arbeitsweise;423
14.2.2;12.2.2 Zentrale und verteilte Versionskontrolle;424
14.3;12.3 Was ist Git?;424
14.4;12.4 Interessiert mich nicht, ich arbeite alleine!;426
14.5;12.5 Vorbereitungen;426
14.5.1;12.5.1 Git unter Windows installieren;426
14.5.2;12.5.2 Git unter macOS installieren;427
14.5.3;12.5.3 Git unter Linux installieren;428
14.5.4;12.5.4 GitHub;428
14.6;12.6 Los geht’s – Git lokal verwenden;429
14.6.1;12.6.1 Ein bestehendes Projekt unter Versionskontrolle stellen;429
14.6.2;12.6.2 Dateien hinzufügen;431
14.6.3;12.6.3 Commit/Einchecken;432
14.6.4;12.6.4 Änderungen vornehmen und überprüfen;433
14.6.5;12.6.5 Änderungen rückgängig machen;435
14.6.6;12.6.6 Betrachten der Historie;436
14.6.7;12.6.7 Zu älteren Versionen zurückkehren – Möglichkeit 1;438
14.6.8;12.6.8 Dateien ignorieren;439
14.7;12.7 Zusammenarbeit über ein Remote Repository;440
14.7.1;12.7.1 Projekt auf GitHub veröffentlichen;441
14.7.2;12.7.2 Ein Repository klonen;441
14.7.3;12.7.3 Änderungen pushen;443
14.7.4;12.7.4 Pull;443
14.7.5;12.7.5 Wer hat’s erfunden?;444
14.7.6;12.7.6 Automatisches Merging;444
14.7.7;12.7.7 Mergen und Konflikte beheben;445
14.8;12.8 Branching;449
14.8.1;12.8.1 Um was geht es?;449
14.8.2;12.8.2 Einen Branch erzeugen und damit arbeiten;450
14.8.3;12.8.3 Zwischen Branches wechseln;452
14.8.4;12.8.4 Branches mergen;452
14.8.5;12.8.5 Branches pushen;454
14.8.6;12.8.6 Fetch;454
14.8.7;12.8.7 Zu älteren Versionen zurückkehren – Möglichkeit 2;455
14.9;12.9 Weitere nützliche Features;455
14.9.1;12.9.1 Stashing – Änderungen temporär speichern;456
14.9.2;12.9.2 Commits korrigieren;458
14.9.3;12.9.3 Tagging;458
14.10;12.10 Noch ein paar Tipps;459
14.10.1;12.10.1 Zwei einfache Branching-Modelle;459
14.10.2;12.10.2 Atomare Commits;460
14.10.3;12.10.3 Test-Repository griffbereit halten;461
14.10.4;12.10.4 Andere Git-Clients;461
14.11;12.11 Kurz & knapp;462
15;13 Minecraft auf dem Raspberry Pi;466
15.1;13.1 Um was geht es in diesem Kapitel?;466
15.1.1;13.1.1 Der Raspberry Pi – ein kleines Kraftpaket;466
15.1.2;13.1.2 Minecraft Pi;467
15.1.3;13.1.3 Was wird benötigt?;468
15.2;13.2 Der Sprung ins kalte Wasser;469
15.3;13.3 Die Entwicklungsumgebungen;469
15.4;13.4 Den Raspberry Pi einrichten;470
15.4.1;13.4.1 Erstellen der SD-Karte;470
15.4.2;13.4.2 Einstellen des Tastaturlayouts;471
15.4.3;13.4.3 Minecraft starten;471
15.4.4;13.4.4 Die Steuerung;471
15.5;13.5 Der erste Testlauf;473
15.5.1;13.5.1 Arbeiten mit IDLE;473
15.5.2;13.5.2 Arbeiten mit Thonny;475
15.6;13.6 Das Begleitmaterial;476
15.7;13.7 Die Minecraft Python API;476
15.7.1;13.7.1 Quellen und weitere Informationen:;477
15.7.2;13.7.2 Eine Übersicht der Minecraft API;477
15.7.3;13.7.3 Die Klasse Minecraft;477
15.7.4;13.7.4 Die Klasse CmdCamera;480
15.7.5;13.7.5 Die Klasse CmdPlayer;481
15.7.6;13.7.6 Die Klasse CmdEntity;481
15.7.7;13.7.7 Die Klasse Block;482
15.7.7.1;13.7.7.1 Eine Übersicht der wichtigsten Blöcke;482
15.7.8;13.7.8 Noch einmal alles zusammen;483
15.8;13.8 Beispiele zu Schleifen und Bedingungen;485
15.8.1;13.8.1 Blocktypen ausprobieren;485
15.8.2;13.8.2 Spielfigur automatisch durch die Welt bewegen;487
15.8.3;13.8.3 Eine Treppe bauen;488
15.8.4;13.8.4 Eine Pyramide bauen;489
15.9;13.9 Beispiele zu Funktionen;491
15.9.1;13.9.1 Swimmingpools bauen;491
15.9.2;13.9.2 Moderne Kunst?;493
15.10;13.10 Beispiele zu Klassen;496
15.10.1;13.10.1 Blöcke regnen lassen;496
15.10.2;13.10.2 Blinklichter;499
15.11;13.11 Beispiele zu Containern;502
15.11.1;13.11.1 Lichterkette;502
15.11.2;13.11.2 Mengenoperationen;504
15.12;13.12 Ein Beispiel zu Modulen und Paketen;506
15.13;13.13 exit() – wie geht es weiter?;509
16;Index;510


1 Grundlagen
1.1 Hältst Du das richtige Buch in den Händen?

Du möchtest die Programmiersprache Python erlernen oder Dein bereits vorhandenes Wissen darin erweitern? Dann bist Du hier genau richtig! Egal ob Du Dich zum ersten Mal mit dem Thema Programmierung auseinandersetzt oder schon Erfahrungen mit anderen Sprachen hast: Dieses Buch wird Dir dabei helfen, Python effektiv zu nutzen. Bereits im ersten Kapitel wirst Du erste Erfolge erzielen und Ergebnisse sehen, ohne Dich zuvor durch einen Theorie-Dschungel kämpfen zu müssen. Die einzigen Voraussetzungen, die Du mitbringen musst, sind Grundkenntnisse im Umgang mit Computern, Experimentierfreudigkeit, Neugier und natürlich auch Geduld. In diesem Buch wird zwar Wert auf einen praxisnahen Einstieg gelegt, aber das bedeutet nicht, dass Du innerhalb weniger Tage besonders ausgeklügelte Anwendungen entwickeln wirst. Das Lernen einer Programmiersprache ist ein stetiger Prozess, der, wie so vieles andere auch, aus Hochs und Tiefs besteht. Ich möchte Dir daher nicht das Versprechen geben, dass Du in x Tagen das Programmieren erlernst. Dafür versichere ich Dir, dass sämtliche Themen mit der nötigen Ausführlichkeit besprochen werden und es immer Tipps und Hilfestellungen geben wird.

Es spielt keine Rolle, welches Betriebssystem Du bevorzugst. Du kannst mit diesem Buch sowohl unter Windows, macOS als auch Linux arbeiten. Alle nötigen Entwicklungswerkzeuge gibt es frei im Netz und werden gleich näher vorgestellt.

Kenntnisse in anderen Programmiersprachen sind zwar vorteilhaft, aber definitiv keine Grundvoraussetzung. Und falls es Dir doch einmal nicht schnell genug geht, kannst Du auch die Zusammenfassung am Ende jedes Kapitels lesen und dann immer noch entscheiden, ob Du das Kapitel Schritt für Schritt durcharbeiten möchtest.

1.2 Dieses Buch bricht mit einigen Konventionen!

Ich habe mich dazu entschlossen, mit einigen Konventionen zu brechen. So verzichte ich beispielsweise darauf, gleich zu Beginn auf Themen wie Objektorientierung oder Container einzugehen. Vielmehr lege ich Wert darauf, dass möglichst schnell erste Ergebnisse und Erfolgserlebnisse zu sehen sind. Das bedeutet natürlich nicht, dass auf sauberen Programmierstil oder fortgeschrittene Konzepte verzichtet wird. Allerdings sollten zuerst einige Grundlagen geschaffen werden, damit man weiterführende Themen versteht. Ich werde zugunsten der Lesbarkeit und der Lernkurve auch darauf verzichten, ein neues Thema sofort in all seinen tiefsten Details zu durchleuchten. Möchte jemand beispielsweise das Kochen erlernen, dann fängt er in der Regel mit einem einfachen Rezept an. Wenn nach fünfzehn oder zwanzig Minuten das erste unkomplizierte Essen auf dem Tisch steht, ist das eine tolle Motivation. Die physikalischen und chemischen Prozesse, die während des Kochvorgangs ablaufen, interessieren zunächst noch nicht. Später wird man vielleicht ausgefeilte Rezepte ausprobieren und sich dann ganz von selbst für die Details und Hintergründe interessieren. Hierzu ein kleiner Vergleich anhand eines Rezeptes, das auf unterschiedliche Weise präsentiert wird:

  • Variante 1: Nimm einen schönen großen Topf, fülle ihn mit einem Liter Wasser und streue einen Teelöffel Salz hinein. Stelle den Topf auf den Herd, schalte die Platte auf Stufe 5 und warte, bis das Wasser kocht. Gib nun eine halbe Packung Nudeln hinzu, rühre gelegentlich um und warte, bis diese bissfest sind. Guten Appetit!

  • Variante 2: Besorgen Sie sich einen temperaturbeständigen, oben offenen Behälter (sogenannter „Topf“), der gute Wärmeleiteigenschaften aufweist. Ideal ist das Element Aluminium oder auch eine Legierung, wie etwa Messing. Messen Sie anschließend mit einem geeigneten und möglichst gut geeichten Messbecher exakt einen Liter Dihydrogenmonoxid (ugs. „Wasser“) ab und füllen Sie dieses in den Behälter. Fügen Sie als Nächstes fünf Gramm Natriumchlorid (besser bekannt als „Salz“) hinzu. Dies dient ausschließlich geschmacklichen Zwecken und nicht etwa dem weit verbreiteten Irrtum, dass sich der Siedepunkt durch die Beigabe in einem relevanten Ausmaß ändert. Beachten Sie dabei jedoch, dass der Siedepunkt vom Luftdruck abhängig ist. Sollten Sie sich also in extremen Höhen oder Tiefen befinden, können Sie den Siedepunkt nach folgender Formel berechnen .?.?.

Auch ohne das Rezept in Variante zwei zu Ende zu führen sollte klar sein, worauf ich hinaus will: Details, Hintergründe und Exaktheit sind durchaus wichtig, aber in dieser Fülle für ein einfaches Beispiel nicht angebracht. Sie können einen erschlagen, die Motivation rauben und vom eigentlichen Geschehen ablenken. Das bedeutet selbstverständlich nicht, dass Themen grundsätzlich oberflächlich behandelt werden. Es geht vielmehr darum, Details auf einen geeigneteren Zeitpunkt zu verschieben.

1.3 Die Arbeit mit diesem Buch

Idealerweise arbeitest Du die Kapitel in der angegebenen Reihenfolge durch, denn sie bauen in der Regel auf vorangegangene Kenntnisse auf. Neue Themen werden zunächst erklärt und deren Anwendungsmöglichkeiten anhand von Beispielen verdeutlicht. Damit sich neu Gelerntes festigt, gibt es immer wieder kleine Übungsaufgaben. Sieh diese nicht als lästige Pflicht, sondern als Herausforderung an. Man lernt viel besser, wenn man sich Lösungen selbst erarbeitet, anstatt nur vorgefertigte Beispiele zu laden und zu starten. Natürlich werde ich Dir zu jeder Aufgabe Tipps und Hinweise geben. Im Anschluss gibt es dann eine Musterlösung, die Du mit Deiner eigenen Lösung vergleichen kannst.

Eine besondere Art von Aufgaben sind die sogenannten Fehlerquelltexte. Dabei handelt es sich um Beispiele, in die absichtlich Fehler eingebaut wurden. Diese Fehler führen dazu, dass sich das Programm entweder nicht ausführen lässt, oder dass es nicht so funktioniert wie erwartet. Selbst der erfahrenste Programmierer macht immer wieder Fehler und muss in der Lage sein, diese zu finden und zu korrigieren. Dennoch gibt es ganz bestimmte Stolpersteine, an denen man gerade anfangs immer wieder hängen bleibt. Die Fehlerquelltexte helfen dabei, ein Gespür für typische Fallen zu entwickeln und diese in Zukunft zu umgehen. Dies ist nützlich, um Fehler nicht nur schneller zu finden, sondern sie nach Möglichkeit auch von Anfang an so gut es geht zu vermeiden. Natürlich gibt es auch an dieser Stelle immer einige Tipps, wie man den Fehler eingrenzen, finden und beheben kann. Zudem wird auch eine korrigierte Fassung des Fehlerquelltextes gezeigt.

Abgesehen von den Vorschlägen wie Du am besten mit diesem Buch arbeitest, möchte ich Dir noch einige allgemeine Tipps mit auf den Weg geben. Wie so oft ist es bei neuen Dingen so, dass man anfangs große Fortschritte macht und dann plötzlich an eine Stelle gerät, an der es scheinbar nicht oder nur langsam vorangeht. Neue Themen wirken dann vielleicht übermäßig komplex oder deren Sinn erschließt sich nicht. Das kann manchmal ziemlich frustrierend sein, ist aber völlig normal. Am besten macht man in einer solchen Situation einfach eine längere Pause und beschäftigt sich mit etwas völlig anderem. Idealerweise mit etwas, das nichts mit Computern zu tun hat. Meistens kehrt man dann später mit einem anderen Blickwinkel zu dem Problem zurück und die Dinge scheinen wieder klarer. Auch wenn das vielleicht nach einem recht offensichtlichen Tipp klingt, solltest Du ihn dennoch beherzigen. Programmierung ist eine sehr fordernde Tätigkeit, die Pausen erfordert. „Eine Nacht darüber schlafen“ hat schon so manchem hartnäckigen Programmierfehler den Garaus gemacht und für frische Ideen gesorgt. Manchmal ist es auch hilfreich, sich einem anderen Thema zu widmen, wenn man an einer Stelle nicht weiterkommt. Blättere einfach einmal in vorherige Kapitel zurück oder schnuppere in neue Kapitel hinein.

Das Erlernen einer Programmiersprache (und das Programmieren an sich) kann man mit dem Erlernen eines Musikinstruments vergleichen: Man ist niemals fertig damit und hat nie ausgelernt. Selbst wenn man alle Features einer Programmiersprache kennt, stößt man immer wieder auf neue Programmiertechniken oder Themengebiete. Daher ist es wichtig, immer am Ball zu bleiben, um nicht den Anschluss zu verlieren.

Du solltest auch nicht vergessen, dass die Zeiten vorbei sind, in denen ein einsamer Programmierer im schwach beleuchteten Keller sitzt und völlig auf sich gestellt ein Programm entwickelt. Natürlich ist das immer noch möglich, aber nicht sonderlich sinnvoll. Programmierer sind längt keine winzige Randgruppe mehr, die ihr Wissen völlig neu erarbeitet und dann verschwörerisch hütet. In der heutigen Zeit beschäftigen sich sehr viele Menschen mit diesem Thema und sie tauschen sich über das Internet aus. Anstatt tagelang über einem Problem zu brüten, sucht man im Internet nach einer Lösung. Man kann fast immer davon ausgehen, dass jemand anderes zuvor genau das gleiche Problem hatte und es eine Lösung dafür gibt. Falls nicht, kann man immer noch selbst um Hilfe bitten. Das bedeutet natürlich nicht, dass man nicht selbst nachdenken sollte und sich alles nur noch zusammensuchen muss. Den eigenen Kopf einzuschalten ist die...



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.