Python 3 – Einsteigen und Durchstarten (eBook)
516 Seiten
Carl Hanser Verlag GmbH & Co. KG
978-3-446-45689-1 (ISBN)
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
Heiko Kalista brachte sich mit 14 Jahren das Programmieren bei und entwickelte später hauptberuflich Videospiele. Seit 2009 ist er als Anwendungsentwickler tätig und beschäftigt sich auch in seiner Freizeit mit den Programmiersprachen C++, C# und Python. Darüber hinaus ist er Autor des ebenfalls im Hanser-Verlag erschienenen Buches "C++ für Spieleprogrammierer".
Inhalt 6
Vorwort 16
1 Grundlagen 20
1.1 Hältst Du das richtige Buch in den Händen? 20
1.2 Dieses Buch bricht mit einigen Konventionen! 21
1.3 Die Arbeit mit diesem Buch 22
1.4 Das Kapitel zu Minecraft 23
1.5 Das Begleitmaterial zum Buch 23
1.6 Anregungen? Kritik? Forum? 24
1.7 Die Geschichte von Python in 120 Wörtern 24
1.8 Was kann man mit Python machen (und was nicht)? 25
1.9 Interpreter vs. Compiler 26
1.10 Python 2.7 oder 3.7? 27
1.11 Die Entwicklungsumgebung PyCharm 28
1.11.1 Alternativen zu PyCharm 29
1.12 Python-Interpreter installieren 29
1.12.1 Python-Interpreter unter Windows installieren 30
1.12.2 Python-Interpreter unter macOS installieren 31
1.12.3 Python-Interpreter unter Linux installieren 31
1.12.4 PyCharm unter Windows installieren 32
1.12.5 PyCharm unter macOS installieren 32
1.12.6 PyCharm unter Linux installieren 33
1.12.7 PyCharm einrichten 34
1.13 Genug geredet, los gehts! 36
1.13.1 Das erste Programm eingeben 37
1.13.2 Ausführen des ersten Beispiels 39
1.13.3 Laden der Beispiele 39
1.13.4 Der Quelltext im Detail 41
1.13.5 Kommentare im Detail 42
1.14 PEP8 – um sie ewig zu binden 44
1.15 Python-Programme ohne Entwicklungsumgebung starten 46
1.15.1 Python-Programme unter Windows starten 46
1.15.2 Python-Programme unter Linux oder macOS starten 47
1.16 Python interaktiv 48
1.17 Aufgabenstellung 50
1.18 Kurz & knapp
2 Variablen 52
2.1 Was sind Variablen? 52
2.2 Statisch typisiert vs. dynamisch typisiert 53
2.3 Einige Details vorab – Variablen sind auch nur Namen 55
2.4 Richtlinien für Variablennamen 57
2.4.1 Von Kamelen, Schlangen und Pascal 57
2.4.2 Sinnvolle Variablennamen 58
2.5 Rechnen mit Variablen 59
2.5.1 Verkürzte Schreibweise bei Rechenoperationen 60
2.5.2 Gibt es noch weitere Datentypen? 61
2.5.3 Konvertierung von Datentypen 62
2.5.4 Besonderheiten bei der Konvertierung von Datentypen 63
2.6 Formatierte Ausgabe mit print() 64
2.7 Genauigkeit von Fließkommazahlen 66
2.7.1 Formatierte Ausgabe von Fließkommazahlen 67
2.8 Den ganzzahligen Rest einer Division bestimmen 68
2.9 Konstanten, Konventionen und Restriktionen 69
2.10 Fehlerquelltext 70
2.10.1 Was ist die Aufgabe des Programms? 71
2.10.2 Lösungsvorschlag 71
2.10.3 Die gemeinen Kleinigkeiten 73
2.11 Aufgabenstellung 74
2.11.1 Einige Tipps 74
2.11.2 Lösung zur Aufgabenstellung 75
2.12 Kurz & knapp
3 Schleifen und Bedingungen 78
3.1 Was sind Schleifen und Bedingungen? 78
3.2 Die if-Bedingung 79
3.2.1 Blöcke und Einrückungen 80
3.2.2 Arbeit sparen mit else 81
3.2.3 elif 83
3.3 Der Platzhalter pass 85
3.4 Blöcke im interaktiven Modus 86
3.5 Logische Operatoren 86
3.6 PyCharm – Korrekturvorschläge übernehmen 89
3.7 while-Schleifen 90
3.7.1 Eine Schleife mit break vorzeitig beenden 91
3.7.2 continue in while-Schleifen 93
3.7.3 while-else 94
3.8 for-Schleifen 95
3.8.1 Eine einfache Zählschleife 96
3.8.2 Ein Wort zu Schleifenvariablen 97
3.8.3 Die Funktion range() im Detail 98
3.8.4 break und continue in for-Schleifen 99
3.8.5 Sonderfall Unterstrich: die Wegwerfvariable 100
3.9 Ein kurzer Abstecher: Exceptions 101
3.10 Fehlerquelltext 102
3.10.1 Was ist die Aufgabe des Programms? 103
3.10.2 Lösung zum Fehlerquelltext 104
3.11 Aufgabenstellung 105
3.11.1 Einige Tipps 106
3.11.2 Lösungsvorschlag 107
3.12 Ein umfangreicheres Beispiel: Zahlenraten 108
3.12.1 Die Hauptschleife 111
3.12.2 Ein neues Spiel starten 111
3.12.3 Abfrage des Schwierigkeitsgrades und Beenden des Spiels 112
3.13 Kurz & knapp
4 Funktionen 116
4.1 Was sind Funktionen? 116
4.2 Eine einfache Funktion definieren 116
4.3 Parameter, Argumente und Rückgabewert 118
4.4 Weitere Möglichkeiten, Funktionen aufzurufen 120
4.5 Globale und lokale Variablen 122
4.5.1 Ein bisschen mehr Verwirrung, bitte! 124
4.5.2 Das Schlüsselwort global 125
4.5.3 Auch Parameter sind lokal 127
4.5.4 Ein Wort zu globalen Variablen 128
4.5.5 Von Schatten und Hauptprogrammen 128
4.6 Standardwerte für Parameter 132
4.7 Schlüsselwortparameter 133
4.8 Wann sollten Funktionen zum Einsatz kommen? 135
4.9 Aufgabenstellung 136
4.9.1 Lösung zur Aufgabenstellung 137
4.10 Vorgehensweise bei größeren Projekten 140
4.11 Rekursion 141
4.12 Fehlerquelltext 142
4.12.1 Was ist die Aufgabe des Programms? 143
4.12.2 Lösung zum Fehlerquelltext 144
4.13 Kurz & knapp
5 Klassen 150
5.1 Was ist Objektorientierung? 150
5.2 Eine einfache Klasse definieren 151
5.2.1 Aufbau einer Klasse 152
5.2.2 Erzeugen von Objekten 153
5.2.3 Verwenden der Objekte 154
5.3 Kontrollierter Zugriff auf Attribute: Properties 155
5.3.1 Getter 155
5.3.2 Setter 158
5.3.3 Wann sollten Attribute und wann Properties verwendet werden? 159
5.3.4 Nachträgliches Umstellen auf Properties 160
5.4 Dynamische Attribute 161
5.5 Klassenattribute 164
5.5.1 Stolpersteine bei Klassenattributen 166
5.6 Statische Methoden 168
5.7 Zwischenstand: Braucht man das wirklich? 170
5.8 Aufgabenstellung 171
5.8.1 Einige Tipps 172
5.8.2 Lösungsvorschlag 173
5.9 Das Gleiche ist nicht dasselbe 175
5.9.1 Für Fortgeschrittene: Parameterübergabe im Detail 178
5.10 None 180
5.11 Vererbung 182
5.11.1 Ein einfaches Beispiel 183
5.11.2 Überschreiben von Methoden 185
5.12 Wie das Smartphone erfunden wurde – oder: Mehrfachvererbung 190
5.13 Für Fortgeschrittene: Binden von Methoden 193
5.13.1 Ein Blick hinter die Kulissen 193
5.13.2 Klassen um eigene Funktionen erweitern 195
5.13.3 Statische Methoden und instanzbezogene Bindung 197
5.14 Überschreiben der Methode __str__() 201
5.15 Und wo ist der Fehlerquelltext? 202
5.16 Kurz & knapp
6 Container 208
6.1 Was sind Container? 208
6.1.1 Eine Anmerkung, bevor es losgeht 208
6.2 Listen 209
6.2.1 Listen erzeugen und auf Elemente zugreifen 209
6.2.2 Listen dynamisch erzeugen 210
6.2.3 Elemente löschen oder ersetzen 212
6.2.4 Aufgabenstellung 215
6.2.4.1 Einige Tipps 216
6.2.4.2 Lösung zur Aufgabenstellung 216
6.2.5 Sortieren von Listen 217
6.2.5.1 Eigene Sortierfunktionen 219
6.2.5.2 Eine weitere Möglichkeit der Sortierung: sorted 221
6.2.5.3 Für Fortgeschrittene: lambda – anonyme Funktionen 222
6.2.6 Listen verknüpfen 225
6.2.7 Nicht nur für Fortgeschrittene: tiefes und flaches Kopieren 226
6.3 Tupel 228
6.3.1 Unterschiede zu Listen 228
6.3.2 Vorsicht: Instanzen in Tupeln können geändert werden 230
6.3.3 Mehrere Rückgabewerte mit Tupeln 231
6.3.4 Für Fortgeschrittene: namedtuple 233
6.4 Strings 235
6.4.1 Für Fortgeschrittene: Darum sind Strings unveränderlich 236
6.4.2 Slicing 238
6.4.3 Arbeiten mit Strings 240
6.4.4 Strings verbinden 240
6.4.5 Zerlegen und wieder zusammensetzen: split und join 242
6.4.6 Strings „aufbereiten“ 244
6.4.7 Ändern der Groß- und Kleinschreibung 246
6.4.8 Strings durchsuchen 247
6.4.9 Aufgabenstellung 249
6.4.9.1 Einige Tipps 250
6.4.9.2 Lösungsvorschlag 250
6.4.10 Ersetzungen durchführen 252
6.5 Dictionaries 254
6.5.1 Grundlagen von Dictionaries 254
6.5.2 Vorsicht beim Zugriff! 255
6.5.3 Dictionaries durchlaufen und verändern 257
6.5.4 Elemente aus einem Dictionary entfernen 259
6.6 Fehlerquelltext 261
6.6.1 Was ist die Aufgabe des Programms? 261
6.6.2 Lösung zum Fehlerquelltext 262
6.7 Sets und Frozensets 264
6.7.1 Einfache Sets/Frozensets erzeugen 264
6.7.2 Sets: Elemente hinzufügen und entfernen 266
6.7.3 Mengenoperationen 267
6.8 Kurz & knapp
7 Exceptions 280
7.1 Was sind Exceptions? 280
7.2 Fehler? Die passieren mir doch nicht! 280
7.3 Die Mechanik von Exceptions 282
7.4 Abfangen unterschiedlicher Exceptions 284
7.5 Alle Exceptions fangen 286
7.6 Eigene Exceptions 288
7.7 else und finally 291
7.8 Einige allgemeine Tipps 294
7.9 Kurz & knapp
8 Module und Pakete 302
8.1 Module 302
8.1.1 Grundlagen 303
8.1.2 Dokumentation von Modulen 305
8.1.3 Umbenennen eines Namensraums 307
8.1.4 Selektives Importieren 308
8.1.5 Namensräume haben ihren Sinn 309
8.1.6 Batteries included! 309
8.1.7 Reihenfolge beim Importieren 310
8.1.8 Eigene Module in mehreren Projekten nutzen 311
8.1.9 Tipps für das Schreiben von Modulen 311
8.1.10 Automatische Ausführung beim Import verhindern 313
8.2 Pakete 314
8.2.1 Importieren von Modulen aus Paketen 315
8.2.2 Reguläre Pakete 316
8.2.3 Namespace Packages 317
8.2.4 Unterscheidung der Paketarten 318
8.3 Kurz & knapp
9 Dateien und Dateisystem 322
9.1 Lesen und Schreiben von Dateien 322
9.1.1 Eine einfache Textdatei auslesen 323
9.1.2 Fehler beim Öffnen von Dateien 324
9.1.3 Eine Datei schrittweise auslesen 325
9.1.4 Zeilenweises Auslesen von Textdateien 327
9.1.5 Textdateien schreiben 328
9.1.6 Übersicht möglicher Modi der Funktion open() 330
9.1.7 Aufgabenstellung 331
9.2 Dateien und Dateisystem 331
9.2.1 Verzeichnisse 332
9.2.2 Pfade und Prüfung auf deren Existenz 333
9.2.3 Pfade und Plattformunabhängigkeit 335
9.2.4 Verzeichnisse und Dateien erzeugen und löschen 336
9.2.5 Verzeichnisstrukturen erzeugen und löschen 339
9.2.6 Umbenennen von Verzeichnissen und Dateien 341
9.2.7 Kopieren und Verschieben 343
9.3 Kurz & knapp
10 GUI-Programmierung mit tkinter 350
10.1 Warum gerade tkinter? 350
10.2 Die Layout-Manager 351
10.2.1 Absolute Positionierung 351
10.2.2 Der pack-Manager 352
10.2.3 Der grid-Manager 357
10.2.4 Welcher Manager soll es sein? 359
10.3 Flexible Fenstergröße 360
10.4 Konfiguration von Widgets 363
10.5 Steuerelemente im Detail 365
10.5.1 Buttons 365
10.5.2 Kontrollvariablen 367
10.5.3 Eingabefelder 368
10.5.4 Textboxen 369
10.5.5 Checkboxen 373
10.5.6 Radiobuttons 375
10.5.7 Aufgabenstellung 376
10.5.8 Lösungsvorschlag 377
10.5.9 Listboxen 378
10.5.10 Listbox mit Scrollbalken 381
10.6 Fehlerquelltext 382
10.6.1 Was ist die Aufgabe des Programms? 382
10.6.2 Lösung zum Fehlerquelltext 383
10.7 Dialogfenster 385
10.8 Menüs 388
10.8.1 Einfache Menüs 388
10.8.2 Untermenüs 389
10.9 Kurz & knapp
11 Debugging 396
11.1 Was ist ein Debugger? 397
11.2 Eine einfache Fehlersuche 397
11.2.1 Haltepunkte setzen und entfernen 398
11.2.2 Das Programm durchlaufen und Werte betrachten 399
11.2.3 Geht es auch ohne Haltepunkte? 402
11.2.4 Interaktive Fehlersuche mit der Python-Konsole 403
11.3 Debuggen von Funktionen und Methoden 405
11.3.1 In Funktionen springen 406
11.3.2 Abschnitte überspringen und Funktionen verlassen 407
11.3.3 Clever springen 408
11.4 Watches 409
11.5 Haltepunkte im Detail 411
11.5.1 Ein Beispiel zum Experimentieren 411
11.5.2 Verwalten von Haltepunkten 412
11.5.3 Unterbrechen oder nicht? 416
11.5.4 Bedingte Haltepunkte 416
11.5.5 Protokollierung 417
11.5.6 Temporäre Haltepunkte 418
11.5.7 Verkettete Haltepunkte 419
11.5.8 Haltepunkte für Exceptions 419
11.5.9 Kombination der Optionen 420
11.6 Einsatz in der Praxis 421
12 Versionsverwaltung mit Git 422
12.1 Der vermeintlich leichte Weg 422
12.2 Wie funktionieren Versionskontrollsysteme? 423
12.2.1 Verallgemeinerte Arbeitsweise 423
12.2.2 Zentrale und verteilte Versionskontrolle 424
12.3 Was ist Git? 424
12.4 Interessiert mich nicht, ich arbeite alleine! 426
12.5 Vorbereitungen 426
12.5.1 Git unter Windows installieren 426
12.5.2 Git unter macOS installieren 427
12.5.3 Git unter Linux installieren 428
12.5.4 GitHub 428
12.6 Los geht’s – Git lokal verwenden 429
12.6.1 Ein bestehendes Projekt unter Versionskontrolle stellen 429
12.6.2 Dateien hinzufügen 431
12.6.3 Commit/Einchecken 432
12.6.4 Änderungen vornehmen und überprüfen 433
12.6.5 Änderungen rückgängig machen 435
12.6.6 Betrachten der Historie 436
12.6.7 Zu älteren Versionen zurückkehren – Möglichkeit 1 438
12.6.8 Dateien ignorieren 439
12.7 Zusammenarbeit über ein Remote Repository 440
12.7.1 Projekt auf GitHub veröffentlichen 441
12.7.2 Ein Repository klonen 441
12.7.3 Änderungen pushen 443
12.7.4 Pull 443
12.7.5 Wer hat’s erfunden? 444
12.7.6 Automatisches Merging 444
12.7.7 Mergen und Konflikte beheben 445
12.8 Branching 449
12.8.1 Um was geht es? 449
12.8.2 Einen Branch erzeugen und damit arbeiten 450
12.8.3 Zwischen Branches wechseln 452
12.8.4 Branches mergen 452
12.8.5 Branches pushen 454
12.8.6 Fetch 454
12.8.7 Zu älteren Versionen zurückkehren – Möglichkeit 2 455
12.9 Weitere nützliche Features 455
12.9.1 Stashing – Änderungen temporär speichern 456
12.9.2 Commits korrigieren 458
12.9.3 Tagging 458
12.10 Noch ein paar Tipps 459
12.10.1 Zwei einfache Branching-Modelle 459
12.10.2 Atomare Commits 460
12.10.3 Test-Repository griffbereit halten 461
12.10.4 Andere Git-Clients 461
12.11 Kurz & knapp
13 Minecraft auf dem Raspberry Pi 466
13.1 Um was geht es in diesem Kapitel? 466
13.1.1 Der Raspberry Pi – ein kleines Kraftpaket 466
13.1.2 Minecraft Pi 467
13.1.3 Was wird benötigt? 468
13.2 Der Sprung ins kalte Wasser 469
13.3 Die Entwicklungsumgebungen 469
13.4 Den Raspberry Pi einrichten 470
13.4.1 Erstellen der SD-Karte 470
13.4.2 Einstellen des Tastaturlayouts 471
13.4.3 Minecraft starten 471
13.4.4 Die Steuerung 471
13.5 Der erste Testlauf 473
13.5.1 Arbeiten mit IDLE 473
13.5.2 Arbeiten mit Thonny 475
13.6 Das Begleitmaterial 476
13.7 Die Minecraft Python API 476
13.7.1 Quellen und weitere Informationen: 477
13.7.2 Eine Übersicht der Minecraft API 477
13.7.3 Die Klasse Minecraft 477
13.7.4 Die Klasse CmdCamera 480
13.7.5 Die Klasse CmdPlayer 481
13.7.6 Die Klasse CmdEntity 481
13.7.7 Die Klasse Block 482
13.7.7.1 Eine Übersicht der wichtigsten Blöcke 482
13.7.8 Noch einmal alles zusammen 483
13.8 Beispiele zu Schleifen und Bedingungen 485
13.8.1 Blocktypen ausprobieren 485
13.8.2 Spielfigur automatisch durch die Welt bewegen 487
13.8.3 Eine Treppe bauen 488
13.8.4 Eine Pyramide bauen 489
13.9 Beispiele zu Funktionen 491
13.9.1 Swimmingpools bauen 491
13.9.2 Moderne Kunst? 493
13.10 Beispiele zu Klassen 496
13.10.1 Blöcke regnen lassen 496
13.10.2 Blinklichter 499
13.11 Beispiele zu Containern 502
13.11.1 Lichterkette 502
13.11.2 Mengenoperationen 504
13.12 Ein Beispiel zu Modulen und Paketen 506
13.13 exit() – wie geht es weiter? 509
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...
Erscheint lt. Verlag | 8.10.2018 |
---|---|
Verlagsort | München |
Sprache | deutsch |
Themenwelt | Informatik ► Programmiersprachen / -werkzeuge ► Python |
Schlagworte | Minecraft • PyCharm • Python 3.6 • Raspberry Pi • Unit Tests |
ISBN-10 | 3-446-45689-9 / 3446456899 |
ISBN-13 | 978-3-446-45689-1 / 9783446456891 |
Haben Sie eine Frage zum Produkt? |
Größe: 11,7 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
Größe: 6,1 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich