Python Crashkurs - Eine praktische, projektbasierte Programmiereinführung
von: Eric Matthes
dpunkt, 2017
ISBN: 9783960881452
Sprache: Deutsch
622 Seiten, Download: 14300 KB
Format: PDF, auch als Online-Lesen
Python Crashkurs | 1 | ||
Inhaltsverzeichnis | 5 | ||
Der Autor | 22 | ||
Der Fachgutachter | 22 | ||
Danksagung | 23 | ||
Teil 1:Grundlagen | 25 | ||
Kapitel 1:Erste Schritte | 27 | ||
Die Programmierumgebung einrichten | 27 | ||
Python 2 und 3 | 28 | ||
Python-Codeausschnitte ausführen | 28 | ||
Hello World! | 29 | ||
Python auf verschiedenen Betriebssystemen | 29 | ||
Python unter Linux | 29 | ||
Python unter OS X | 33 | ||
Python unter Windows | 36 | ||
Fehlersuche | 41 | ||
Python-Programme im Terminal ausführen | 42 | ||
Unter Linux und OS X | 42 | ||
Unter Windows | 43 | ||
Zusammenfassung | 44 | ||
Kapitel 2:Variablen und einfache Datentypen | 45 | ||
Was bei der Ausführung von hello_world.py wirklich geschieht | 45 | ||
Variablen | 46 | ||
Variablen benennen und verwenden | 47 | ||
Fehler bei Variablennamen vermeiden | 48 | ||
Strings | 49 | ||
Groß- und Kleinschreibung mithilfe von Methoden ändern | 50 | ||
Strings verketten | 51 | ||
Weißraum hinzufügen | 52 | ||
Weißraum entfernen | 53 | ||
Syntaxfehler bei der Stringverarbeitung vermeiden | 54 | ||
Die Print-Anweisung in Python 2 | 56 | ||
Zahlen | 57 | ||
Integer | 57 | ||
Fließkommazahlen | 58 | ||
Typisierungsfehler mithilfe der Funktion str() vermeiden | 58 | ||
Integer in Python 2 | 59 | ||
Kommentare | 60 | ||
Wie werden Kommentare geschrieben? | 61 | ||
Was für Kommentare sind sinnvoll? | 61 | ||
The Zen of Python | 62 | ||
Zusammenfassung | 64 | ||
Kapitel 3:Eine Einführung in Listen | 65 | ||
Was sind Listen? | 65 | ||
Elemente in einer Liste ansprechen | 66 | ||
Indizes beginnen bei 0, nicht bei 1 | 67 | ||
Einzelne Werte aus einer Liste verwenden | 67 | ||
Elemente ändern, hinzufügen und entfernen | 68 | ||
Elemente in einer Liste ändern | 69 | ||
Elemente zu einer Liste hinzufügen | 69 | ||
Elemente aus einer Liste entfernen | 71 | ||
Listen ordnen | 76 | ||
Listen mit sort() dauerhaft sortieren | 76 | ||
Listen mit der Funktion sorted() vorübergehend sortieren | 76 | ||
Listen in umgekehrter Reihenfolge ausgeben | 77 | ||
Die Länge einer Liste ermitteln | 78 | ||
Indexfehler vermeiden | 79 | ||
Zusammenfassung | 81 | ||
Kapitel 4:Mit Listen arbeiten | 83 | ||
Eine komplette Liste durchlaufen | 83 | ||
Die Schleife im Detail | 84 | ||
Weitere Aufgaben in einer for-Schleife erledigen | 85 | ||
Aktionen nach der for-Schleife | 87 | ||
Einrückungsfehler vermeiden | 88 | ||
Vergessene Einrückung der ersten Zeile in einer Schleife | 88 | ||
Vergessene Einrückung nachfolgender Zeilen | 89 | ||
Unnötige Einrückung | 89 | ||
Unnötige Einrückung nach einer Schleife | 90 | ||
Vergessener Doppelpunkt | 91 | ||
Numerische Listen | 92 | ||
Die Funktion range() | 92 | ||
Numerische Listen mithilfe von range() aufstellen | 93 | ||
Einfache Statistiken für numerische Listen | 94 | ||
Listennotation | 95 | ||
Teillisten | 96 | ||
Einen Slice erstellen | 96 | ||
Einen Slice in einer Schleife durchlaufen | 98 | ||
Listen kopieren | 99 | ||
Tupel | 102 | ||
Ein Tupel definieren | 102 | ||
Die Werte in einem Tupel durchlaufen | 103 | ||
Tupel überschreiben | 103 | ||
Code formatieren | 104 | ||
Die Gestaltungsrichtlinien | 104 | ||
Einrückung | 105 | ||
Zeilenlänge | 105 | ||
Leerzeilen | 106 | ||
Zusammenfassung | 107 | ||
Kapitel 5:if-Anweisungen | 109 | ||
Ein einfaches Beispiel | 109 | ||
Bedingungen | 110 | ||
Prüfung auf Gleichheit | 110 | ||
Groß- und Kleinschreibung bei der Prüfung auf Gleichheit | 111 | ||
Prüfung auf Ungleichheit | 112 | ||
Numerische Vergleiche | 113 | ||
Prüfung auf mehrere Bedingungen | 114 | ||
Prüfung auf Vorhandensein eines Werts in einer Liste | 115 | ||
Prüfung auf Abwesenheit eines Werts in einer Liste | 115 | ||
Boolesche Ausdrücke | 116 | ||
if-Anweisungen | 117 | ||
Einfache if-Anweisungen | 117 | ||
if-else-Anweisungen | 118 | ||
Die if-elif-else-Kette | 119 | ||
Mehrere elif-Blöcke | 121 | ||
Den else-Block weglassen | 121 | ||
Mehrere Bedingungen prüfen | 122 | ||
if-Anweisungen für Listen | 125 | ||
Prüfung auf besondere Elemente | 125 | ||
Prüfung auf nicht leere Liste | 126 | ||
Mehrere Listen verwenden | 127 | ||
if-Anweisungen gestalten | 129 | ||
Zusammenfassung | 130 | ||
Kapitel 6:Dictionaries | 131 | ||
Ein einfaches Dictionary | 132 | ||
Umgang mit Dictionaries | 132 | ||
Zugriff auf die Werte in einem Dictionary | 133 | ||
Schlüssel-Wert-Paare hinzufügen | 134 | ||
Ein leeres Dictionary als Ausgangspunkt | 134 | ||
Werte in einem Dictionary ändern | 135 | ||
Schlüssel-Wert-Paare entfernen | 137 | ||
Ein Dictionary aus ähnlichen Objekten | 137 | ||
Dictionaries in einer Schleife durchlaufen | 140 | ||
Alle Schlüssel-Wert-Paare durchlaufen | 140 | ||
Alle Schlüssel in einem Dictionary durchlaufen | 142 | ||
Die Schlüssel in einem Dictionary geordnet durchlaufen | 144 | ||
Alle Werte in einem Dictionary durchlaufen | 145 | ||
Verschachtelung | 147 | ||
Dictionaries in einer Liste | 147 | ||
Listen in einem Dictionary | 150 | ||
Dictionaries in einem Dictionary | 152 | ||
Zusammenfassung | 154 | ||
Kapitel 7:Benutzereingaben und while-Schleifen | 155 | ||
Die Funktion input() | 156 | ||
Klar verständliche Eingabeaufforderungen schreiben | 156 | ||
Verwendung von int() für numerische Eingaben | 157 | ||
Der Modulo-Operator | 159 | ||
Benutzereingaben in Python 2.7 | 160 | ||
while-Schleifen | 160 | ||
while-Schleifen in Aktion | 160 | ||
Programmbeendigung durch den Benutzer | 161 | ||
Flags | 163 | ||
Eine Schleife mit break verlassen | 164 | ||
Die Anweisung continue | 165 | ||
Endlosschleifen vermeiden | 166 | ||
while-Schleifen für Listen und Dictionaries | 167 | ||
Elemente von einer Liste in eine andere verschieben | 168 | ||
Alle Vorkommen eines Wertes aus einer Liste entfernen | 169 | ||
Ein Dictionary mit Benutzereingaben füllen | 169 | ||
Zusammenfassung | 171 | ||
Kapitel 8:Funktionen | 173 | ||
Funktionen definieren | 174 | ||
Informationen an eine Funktion übergeben | 174 | ||
Argumente und Parameter | 175 | ||
Argumente übergeben | 176 | ||
Positionsabhängige Argumente | 176 | ||
Schlüsselwortargumente | 178 | ||
Standardwerte | 179 | ||
Gleichwertige Funktionsaufrufe | 180 | ||
Argumentfehler vermeiden | 181 | ||
Rückgabewerte | 182 | ||
Einen einfachen Wert zurückgeben | 183 | ||
Optionale Argumente | 183 | ||
Ein Dictionary zurückgeben | 185 | ||
Funktionen in einer while-Schleife | 186 | ||
Eine Liste übergeben | 188 | ||
Eine Liste mithilfe einer Funktion ändern | 189 | ||
Die Änderung einer Liste in einer Funktion verhindern | 192 | ||
Beliebig viele Argumente übergeben | 193 | ||
Positionsabhängige Argumente und Argumente beliebiger Anzahl kombinieren | 194 | ||
Beliebig viele Schlüsselwortargumente übergeben | 195 | ||
Funktionen in Modulen speichern | 197 | ||
Ein komplettes Modul importieren | 197 | ||
Einzelne Funktionen importieren | 198 | ||
Eine Funktion mit »as« umbenennen | 199 | ||
Ein Modul mit »as« umbenennen | 200 | ||
Alle Funktionen eines Moduls importieren | 200 | ||
Funktionen formatieren | 201 | ||
Zusammenfassung | 202 | ||
Kapitel9: Klassen | 205 | ||
Eine Klasse erstellen und verwenden | 206 | ||
Die Klasse Dog erstellen | 206 | ||
Eine Instanz einer Klasse anlegen | 208 | ||
Mit Klassen und Instanzen arbeiten | 211 | ||
Die Klasse Car | 211 | ||
Einen Standardwert für ein Attribut festlegen | 212 | ||
Attributwerte bearbeiten | 213 | ||
Vererbung | 217 | ||
Die Methode __init__() für eine Kindklasse | 217 | ||
Vererbung in Python 2.7 | 219 | ||
Attribute und Methoden der Kindklasse definieren | 219 | ||
Methoden der Elternklasse überschreiben | 220 | ||
Instanzen als Attribute | 221 | ||
Reale Objekte modellieren | 223 | ||
Klassen importieren | 225 | ||
Eine einzelne Klasse importieren | 225 | ||
Mehrere Klassen in einem Modul speichern | 227 | ||
Mehrere Klassen aus einem Modul importieren | 228 | ||
Ein gesamtes Modul importieren | 229 | ||
Alle Klassen eines Moduls importieren | 229 | ||
Ein Modul in ein Modul importieren | 230 | ||
Ihren eigenen Arbeitsablauf finden | 231 | ||
Die Standardbibliothek von Python | 231 | ||
Klassen formatieren | 233 | ||
Zusammenfassung | 234 | ||
Kapitel 10:Dateien und Ausnahmen | 235 | ||
Aus Dateien lesen | 236 | ||
Eine gesamte Datei lesen | 236 | ||
Dateipfade | 238 | ||
Zeilenweises Lesen | 239 | ||
Eine Liste aus den Zeilen einer Datei erstellen | 240 | ||
Dateiinhalte verarbeiten | 241 | ||
Große Dateien: eine Million Stellen | 242 | ||
Ist Ihr Geburtsdatum in Pi enthalten? | 243 | ||
In Dateien schreiben | 244 | ||
In eine leere Datei schreiben | 245 | ||
Mehrere Zeilen schreiben | 246 | ||
Text an eine Datei anhängen | 246 | ||
Ausnahmen | 247 | ||
Division durch null | 248 | ||
try-except-Blöcke | 248 | ||
Abstürze mithilfe von Ausnahmen verhindern | 249 | ||
Der else-Block | 250 | ||
Datei nicht gefunden | 251 | ||
Text analysieren | 252 | ||
Umgang mit mehreren Dateien | 254 | ||
Fehler stillschweigend übergehen | 255 | ||
Welche Fehler sollten Sie melden und welche nicht? | 256 | ||
Daten speichern | 258 | ||
json.dump() und json.load() | 258 | ||
Benutzergenerierte Daten speichern und lesen | 259 | ||
Refactoring | 261 | ||
Zusammenfassung | 264 | ||
Kapitel 11:Code testen | 267 | ||
Funktionen testen | 268 | ||
Unit Tests und Testfälle | 269 | ||
Ein bestandener Test | 269 | ||
Ein nicht bestandener Test | 271 | ||
Was tun bei einem nicht bestandenen Test? | 272 | ||
Neue Tests hinzufügen | 273 | ||
Klassen testen | 275 | ||
Verschiedene Zusicherungsmethoden | 275 | ||
Eine Beispielklasse zum Testen | 276 | ||
Die Klasse AnonymousSurvey testen | 278 | ||
Die Methode setUp() | 280 | ||
Zusammenfassung | 282 | ||
Teil 2:Projekte | 283 | ||
Alien Invasion – ein Python-Spiel | 283 | ||
Datenvisualisierung | 284 | ||
Webanwendungen | 284 | ||
Projekt 1:Alien Invasion | 285 | ||
Kapitel 12:Das eigene Kampfschiff | 287 | ||
Das Projekt planen | 288 | ||
Pygame installieren | 289 | ||
Python-Pakete mit pip installieren | 289 | ||
Pygame unter Linux installieren | 291 | ||
Pygame unter OS X installieren | 293 | ||
Pygame unter Windows installieren | 293 | ||
Das Spielprojekt beginnen | 294 | ||
Ein Pygame-Fenster anlegen und auf Benutzereingaben reagieren | 294 | ||
Die Hintergrundfarbe festlegen | 296 | ||
Eine Klasse für Einstellungen anlegen | 296 | ||
Das Bild eines Raumschiffs hinzufügen | 298 | ||
Die Klasse Ship | 299 | ||
Das Schiff auf den Bildschirm zeichnen | 301 | ||
Refactoring des Moduls game_functions | 302 | ||
Die Funktion check_events() | 302 | ||
Die Funktion update_screen() | 303 | ||
Das Schiff bewegen | 305 | ||
Auf Tastenbetätigungen reagieren | 305 | ||
Kontinuierliche Bewegung | 306 | ||
Bewegung nach rechts und links | 308 | ||
Die Geschwindigkeit des Schiffes anpassen | 309 | ||
Den Bewegungsbereich des Schiffes einschränken | 311 | ||
Refactoring von check_events() | 312 | ||
Zwischenstand | 312 | ||
alien_invasion.py | 313 | ||
settings.py | 313 | ||
game_functions.py | 313 | ||
ship.py | 313 | ||
Geschosse | 314 | ||
Einstellungen für Geschosse hinzufügen | 314 | ||
Die Klasse Bullet | 314 | ||
Geschosse in Gruppen speichern | 316 | ||
Geschosse abfeuern | 318 | ||
Alte Geschosse löschen | 319 | ||
Die Anzahl der Geschosse begrenzen | 320 | ||
Die Funktion update_bullets() | 321 | ||
Die Funktion fire_bullet() | 322 | ||
Zusammenfassung | 323 | ||
Kapitel 13:Die Außerirdischen | 325 | ||
Überblick über das Projekt | 326 | ||
Das erste Invasionsschiff | 327 | ||
Die Klasse Alien | 328 | ||
Eine Instanz von Alien erstellen | 328 | ||
Das Invasionsschiff auf den Bildschirm zeichnen | 329 | ||
Die Invasionsflotte erstellen | 330 | ||
Wie viele Invasionsschiffe passen in eine Reihe? | 330 | ||
Reihen von Invasionsschiffen erstellen | 331 | ||
Die Flotte erstellen | 332 | ||
Refactoring von create_fleet() | 334 | ||
Reihen hinzufügen | 335 | ||
Die Flotte in Bewegung setzen | 338 | ||
Die Invasoren nach rechts bewegen | 339 | ||
Einstellungen für die Flugrichtung der Flotte | 340 | ||
Auf Randberührungen prüfen | 340 | ||
Sinken und Flugrichtung ändern | 341 | ||
Invasoren abschießen | 343 | ||
Kollisionen von Geschossen erkennen | 343 | ||
Größere Geschosse zu Testzwecken | 344 | ||
Die Flotte auffüllen | 345 | ||
Die Geschosse beschleunigen | 346 | ||
Refactoring von update_bullets() | 347 | ||
Spielende | 348 | ||
Kollisionen zwischen Invasoren und dem eigenen Schiff erkennen | 348 | ||
Auf Kollisionen zwischen Invasoren und dem eigenen Schiff reagieren | 349 | ||
Wenn Invasoren den unteren Bildschirmrand erreichen | 352 | ||
Game over! | 353 | ||
Welche Teile des Spiels müssen ausgeführt werden? | 353 | ||
Zusammenfassung | 354 | ||
Kapitel 14:Das Wertungssystem | 355 | ||
Eine Play-Schaltfläche hinzufügen | 355 | ||
Die Klasse Button | 356 | ||
Die Schaltfläche auf den Bildschirm zeichnen | 358 | ||
Das Spiel starten | 359 | ||
Das Spiel zurücksetzen | 360 | ||
Die Play-Schaltfläche deaktivieren | 362 | ||
Den Mauszeiger ausblenden | 362 | ||
Levels | 363 | ||
Die Geschwindigkeitseinstellungen ändern | 364 | ||
Die Geschwindigkeit zurücksetzen | 365 | ||
Die Punktwertung | 366 | ||
Den Punktestand anzeigen | 367 | ||
Eine Anzeigetafel erstellen | 368 | ||
Den Punktestand bei jedem Abschuss erhöhen | 370 | ||
Alle Treffer berücksichtigen | 372 | ||
Den Punktwert erhöhen | 372 | ||
Den Punktestand runden | 373 | ||
Highscore | 375 | ||
Das Level anzeigen | 378 | ||
Die Anzahl der verfügbaren Schiffe anzeigen | 381 | ||
Zusammenfassung | 386 | ||
Projekt 2:Datenvisualisierung | 387 | ||
Kapitel 15:Daten generieren | 389 | ||
Die Bibliothek matplotlib installieren | 390 | ||
Unter Linux | 390 | ||
Unter OS X | 391 | ||
Unter Windows | 391 | ||
matplotlib testen | 392 | ||
Die matplotlib-Galerie | 392 | ||
Einfache Liniendiagramme | 392 | ||
Beschriftung und Linienstärke ändern | 393 | ||
Das Diagramm korrigieren | 394 | ||
Einzelne Punkte mit scatter() darstellen und gestalten | 395 | ||
Eine Folge von Punkten mit scatter() ausgeben | 397 | ||
Daten automatisch berechnen | 398 | ||
Die Umrandungen der Punkte entfernen | 399 | ||
Eigene Farben festlegen | 399 | ||
Eine Colormap verwenden | 400 | ||
Diagramme automatisch speichern | 401 | ||
Zufallsbewegungen | 401 | ||
Die Klasse RandomWalk() | 402 | ||
Richtungen wählen | 403 | ||
Den Zufallspfad als Diagramm ausgeben | 404 | ||
Mehrere Zufallspfade erstellen | 405 | ||
Den Pfad gestalten | 406 | ||
Die Punkte färben | 406 | ||
Start- und Endpunkte anzeigen | 407 | ||
Die Achsen entfernen | 408 | ||
Datenpunkte hinzufügen | 408 | ||
Die Größe an den Bildschirm anpassen | 410 | ||
Würfeln mit Pygal | 411 | ||
Pygal installieren | 411 | ||
Die Pygal-Galerie | 412 | ||
Die Klasse Die | 412 | ||
Würfeln | 412 | ||
Die Ergebnisse analysieren | 413 | ||
Ein Histogramm erstellen | 414 | ||
Ergebnisse bei zwei Würfeln | 415 | ||
Würfel unterschiedlicher Flächenzahl | 417 | ||
Zusammenfassung | 420 | ||
Kapitel 16:Daten herunterladen | 421 | ||
Das Dateiformat CSV | 422 | ||
CSV-Spaltenköpfe analysieren | 422 | ||
Die Spaltenköpfe und ihre Position ausgeben | 424 | ||
Daten entnehmen und lesen | 424 | ||
Daten in einem Temperaturdiagramm darstellen | 426 | ||
Das Modul datetime | 427 | ||
Datumsangaben im Diagramm darstellen | 428 | ||
Ein Diagramm für einen längeren Zeitraum | 429 | ||
Eine zweite Datenreihe darstellen | 430 | ||
Einen Diagrammbereich einfärben | 432 | ||
Fehlerprüfung | 433 | ||
Globale Daten im JSON-Format visualisieren | 436 | ||
Daten zur Weltbevölkerung herunterladen | 436 | ||
Relevante Daten entnehmen | 436 | ||
Strings in numerische Werte umwandeln | 438 | ||
Zweistellige Ländercodes ermitteln | 439 | ||
Eine Weltkarte zeichnen | 441 | ||
Numerische Daten auf einer Weltkarte darstellen | 443 | ||
Eine vollständige Karte der Weltbevölkerung | 444 | ||
Länder nach der Bevölkerungszahl gruppieren | 446 | ||
Weltkarten in Pygal gestalten | 448 | ||
Die Farbpalette aufhellen | 449 | ||
Zusammenfassung | 451 | ||
Kapitel 17:APIs | 453 | ||
Web-APIs | 453 | ||
Git und GitHub | 454 | ||
Daten über einen API-Aufruf anfordern | 454 | ||
Das Paket requests installieren | 455 | ||
API-Antworten verarbeiten | 456 | ||
Das Antwort-Dictionary verarbeiten | 457 | ||
Ein Überblick über die höchstbewerteten Repositories | 459 | ||
Grenzwerte für die API-Aufrufrate | 460 | ||
Repositories mit Pygal visualisieren | 461 | ||
Pygal-Diagramme verbessern | 463 | ||
Eigene Tooltips hinzufügen | 465 | ||
Die Beschreibungen als Tooltips ausgeben | 466 | ||
Aktive Links zu dem Diagramm hinzufügen | 468 | ||
Die API von Hacker News | 468 | ||
Zusammenfassung | 472 | ||
Projekt 3:Webanwendungen | 473 | ||
Kapitel 18:Erste Schritte mit Django | 475 | ||
Ein Projekt einrichten | 476 | ||
Eine Spezifikation schreiben | 476 | ||
Eine virtuelle Umgebung erstellen | 476 | ||
Das Paket virtualenv installieren | 477 | ||
Die virtuelle Umgebung aktivieren | 478 | ||
Django installieren | 478 | ||
Ein Projekt in Django erstellen | 479 | ||
Die Datenbank erstellen | 479 | ||
Das Projekt anzeigen | 480 | ||
Eine App anlegen | 482 | ||
Modelle definieren | 482 | ||
Modelle aktivieren | 484 | ||
Die Admin-Site von Django | 485 | ||
Das Modell für die Einträge definieren | 488 | ||
Das Modell Entry in die Datenbank aufnehmen | 489 | ||
Das Modell Entry auf der Admin-Site registrieren | 489 | ||
Die Django-Shell | 490 | ||
Seiten erstellen: die Startseite von Learning Log | 493 | ||
Eine URL zuordnen | 493 | ||
Eine Ansicht schreiben | 495 | ||
Eine Vorlage schreiben | 496 | ||
Weitere Seiten erstellen | 497 | ||
Vererbung bei Vorlagen | 498 | ||
Die Seite Topics | 500 | ||
Einzelne Fachgebietsseiten | 503 | ||
Die Vorlage für eine Fachgebietsseite | 505 | ||
Zusammenfassung | 507 | ||
Kapitel 19:Benutzerkonten | 509 | ||
Dateneingabe durch die Benutzer | 510 | ||
Neue Fachgebiete hinzufügen | 510 | ||
Neue Einträge hinzufügen | 515 | ||
Einträge bearbeiten | 519 | ||
Benutzerkonten einrichten | 523 | ||
Die App users | 523 | ||
Die Anmeldeseite | 524 | ||
Abmelden | 527 | ||
Die Registrierungsseite | 529 | ||
Die Benutzer als Besitzer ihrer eigenen Daten | 532 | ||
Den Zugriff mit @login_required beschränken | 533 | ||
Daten mit Benutzern verknüpfen | 535 | ||
Den Zugriff auf die Fachgebiete auf die zuständigen Benutzer einschränken | 538 | ||
Die Fachgebiete eines Benutzers schützen | 539 | ||
Die Seite edit_entry schützen | 540 | ||
Neue Fachgebiete dem aktuellen Benutzer zuordnen | 540 | ||
Zusammenfassung | 542 | ||
Kapitel 20:Eine App gestalten und bereitstellen | 543 | ||
Learning Log gestalten | 544 | ||
Die App django-bootstrap3 | 544 | ||
Learning Log mit Bootstrap gestalten | 545 | ||
Änderungen an base.html | 546 | ||
Die Startseite mit einem Jumbotron gestalten | 550 | ||
Das Anmeldeformular gestalten | 551 | ||
Die Seite new_topic gestalten | 552 | ||
Die Seite Topics gestalten | 553 | ||
Einträge auf den Fachgebietsseiten gestalten | 554 | ||
Learning Log bereitstellen | 556 | ||
Ein Heroku-Konto anlegen | 556 | ||
Heroku Toolbelt installieren | 557 | ||
Die erforderlichen Pakete installieren | 557 | ||
Eine Paketliste mit der Datei requirements.txt erstellen | 557 | ||
Die Python-Laufzeitversion angeben | 559 | ||
Die Datei settings.py für Heroku anpassen | 559 | ||
Ein Procfile zum Starten der Prozesse erstellen | 560 | ||
Die Datei wsgi.py für Heroku anpassen | 561 | ||
Ein Verzeichnis für statische Dateien erstellen | 561 | ||
Den Server gunicorn lokal nutzen | 561 | ||
Mit Git den Überblick über die Projektdateien bewahren | 562 | ||
Die Datenbank auf Heroku einrichten | 566 | ||
Die Heroku-Bereitstellung verbessern | 567 | ||
Das Onlineprojekt schützen | 568 | ||
Änderungen mit Commit bestätigen und übertragen | 569 | ||
Eigene Fehlerseiten erstellen | 571 | ||
Weiterentwicklung des Projekts | 574 | ||
Die Einstellung SECRET_KEY | 574 | ||
Projekte auf Heroku löschen | 575 | ||
Zusammenfassung | 576 | ||
Nachwort | 577 | ||
Anhang | 579 | ||
Anhang A:Python installieren | 579 | ||
Python unter Linux | 579 | ||
Die installierte Version herausfinden | 579 | ||
Python 3 unter Linux installieren | 580 | ||
Python unter OS X | 580 | ||
Die installierte Version herausfinden | 580 | ||
Python 3 mit Homebrew installieren | 581 | ||
Python unter Windows | 582 | ||
Python 3 unter Windows installieren | 582 | ||
Den Python-Interpreter finden | 583 | ||
Python zur Pfadvariablen hinzufügen | 583 | ||
Schlüsselwörter und integrierte Funktionen | 584 | ||
Python-Schlüsselwörter | 584 | ||
Integrierte Python-Funktionen | 584 | ||
Anhang B:Texteditoren | 587 | ||
Geany | 588 | ||
Geany unter Linux installieren | 588 | ||
Geany unter Windows installieren | 589 | ||
Python-Programme in Geany ausführen | 589 | ||
Geany-Einstellungen anpassen | 590 | ||
Sublime Text | 591 | ||
Sublime Text unter OS X installieren | 591 | ||
Sublime Text unter Linux installieren | 591 | ||
Sublime Text unter Windows installieren | 591 | ||
Python-Programme in Sublime Text ausführen | 591 | ||
Sublime Text konfigurieren | 592 | ||
Die Einstellungen von Sublime Text anpassen | 592 | ||
IDLE | 593 | ||
IDLE unter Linux installieren | 593 | ||
IDLE unter OS X installieren | 593 | ||
IDLE unter Windows installieren | 594 | ||
IDLE-Einstellungen anpassen | 594 | ||
Emacs und vim | 594 | ||
Anhang C:Hilfe finden | 595 | ||
Erste Schritte | 595 | ||
Versuchen Sie es erneut | 596 | ||
Legen Sie eine Pause ein | 596 | ||
Nutzen Sie das Onlinematerial zu diesem Buch | 597 | ||
Online nach Hilfe suchen | 597 | ||
Stack Overflow | 597 | ||
Die offizielle Python-Dokumentation | 598 | ||
Offizielle Dokumentation der Bibliotheken | 598 | ||
r/learnpython | 598 | ||
Blogs | 598 | ||
IRC (Internet Relay Chat) | 599 | ||
Ein IRC-Konto anlegen | 599 | ||
Hilfreiche Kanäle | 599 | ||
IRC-Kultur | 600 | ||
Anhang D:Versionssteuerung mit Git | 601 | ||
Git installieren | 602 | ||
Git unter Linux installieren | 602 | ||
Git unter OS X installieren | 602 | ||
Git unter Windows installieren | 602 | ||
Git konfigurieren | 602 | ||
Ein Projekt anlegen | 603 | ||
Dateien ignorieren | 603 | ||
Ein Repository initialisieren | 604 | ||
Den Projektstatus überprüfen | 604 | ||
Dateien zum Repository hinzufügen | 605 | ||
Einen Commit durchführen | 605 | ||
Das Protokoll einsehen | 606 | ||
Der zweite Commit | 606 | ||
Änderungen zurücknehmen | 607 | ||
Vorherige Commits auschecken | 609 | ||
Das Repository löschen | 611 | ||
Stichwortverzeichnis | 613 | ||
www.dpunkt.de | 0 |