Читать книгу Kanban - David J. Anderson - Страница 7
На сайте Литреса книга снята с продажи.
Inhaltsverzeichnis
ОглавлениеVorwort
IEinstieg
1Einführung
1.1Python im Überblick
1.2Los geht’s – Installation
1.2.1Python-Download
1.2.2Installation von Python
1.2.3Nacharbeiten nach der Python-Installation
1.2.4Python-Installation prüfen
1.2.5Python-Programm als Skript ausführen
1.3Entwicklungsumgebungen
1.3.1Installation von PyCharm
1.3.2PyCharm starten
1.3.3Erstes Projekt in PyCharm
1.3.4Erstes Modul in PyCharm
2Schnelleinstieg
2.1Hallo Welt (Hello World)
2.2Variablen und Datentypen
2.2.1Definition von Variablen
2.2.2Variablen und Typen
2.2.3Bezeichner (Variablennamen)
2.3Operatoren im Überblick
2.3.1Arithmetische Operatoren
2.3.2Zuweisungsoperatoren
2.3.3Vergleichsoperatoren
2.3.4Logische Operatoren
2.4Fallunterscheidungen
2.5Funktionen
2.5.1Eigene Funktionen definieren
2.5.2Nützliche Beispiele aus Python
2.5.3Fehlerbehandlung und Exceptions
2.6Kommentare
2.7Module
2.8Built-in-Datentypen
2.8.1List
2.8.2Tupel
2.8.3Set
2.8.4Dict
2.9Schleifen
2.9.1Besonderheit: Ranges
2.9.2Indexbasierte for-in-Schleife
2.9.3Wertebasierte for-in-Schleife
2.9.4Index- und wertebasierte for-in-enumerate-Schleife
2.9.5Die while-Schleife
2.10Weiterführende Informationen
2.11Aufgaben und Lösungen
2.11.1Aufgabe 1: Mathematische Berechnungen
2.11.2Aufgabe 2: Bedingung vereinfachen
2.11.3Aufgabe 3: Funktion und if
2.11.4Aufgabe 4: Selbstabholerrabatt
2.11.5Aufgabe 5: Schleifen mit Berechnungen
2.11.6Aufgabe 6: Schleifen und fixe Schrittweite
2.11.7Aufgabe 7: Schleifen mit variabler Schrittweite
2.11.8Aufgabe 8: Verschachtelte Schleifen – Variante 1
2.11.9Aufgabe 9: Verschachtelte Schleifen – Variante 2
2.11.10Aufgabe 10: Verschachtelte Schleifen – Variante 3
3Strings
3.1Schnelleinstieg
3.1.1Gebräuchliche Stringaktionen
3.1.2Suchen und Ersetzen
3.1.3Informationen extrahieren und formatieren
3.1.4Praxisrelevante Funktionen im Kurzüberblick
3.2Nächste Schritte
3.2.1Zeichenverarbeitung
3.2.2Strings und Listen
3.2.3Mehrzeilige Strings
3.3Aufgaben und Lösungen
3.3.1Aufgabe 1: Länge, Zeichen und Enthaltensein
3.3.2Aufgabe 2: Zeichen wiederholen
3.3.3Aufgabe 3: Vokale raten
3.3.4Aufgabe 4: String Merge
4Klassen und Objektorientierung
4.1Schnelleinstieg
4.1.1Grundlagen zu Klassen und Objekten
4.1.2Eigenschaften (Attribute)
4.1.3Verhalten (Methoden)
4.1.4Objekte vergleichen – die Rolle von __eq__()
4.2Nächste Schritte
4.2.1Klassen ausführbar machen
4.2.2Imports und Packages
4.2.3Übergang zum Einsatz einer IDE
4.2.4Verstecken von Informationen
4.2.5Packages: Auswirkungen auf unsere Applikation
4.3Vererbung
4.3.1Basisklassen
4.3.2Typprüfung mit isinstance()
4.3.3Generalisierung und Spezialisierung
4.3.4Polymorphie
4.4Aufgaben und Lösungen
4.4.1Aufgabe 1: Superheld
4.4.2Aufgabe 2: Zähler
4.4.3Aufgabe 3: Zähler mit Überlauf
5Collections
5.1Schnelleinstieg
5.1.1Die Klasse list
5.1.2Die Klasse set
5.1.3Die Klasse dict
5.2Nächste Schritte
5.2.1Comprehensions
5.2.2Slicing – Zugriff auf Teilbereiche
5.2.3Sortierung – sort() / sorted()
5.2.4Tauschen von Elementen – swap()
5.2.5Reihenfolge umkehren – reverse() und reversed()
5.2.6Mehrdimensionale Listen
5.3Praxisbeispiel: Einen Stack selbst realisieren
5.3.1Implementierung
5.3.2Stack im Einsatz
5.4Praxisbeispiel: Flächen füllen
5.5Aufgaben und Lösungen
5.5.1Aufgabe 1: Tennisverein-Mitgliederliste
5.5.2Aufgabe 2: Liste mit Farbnamen füllen und filtern
5.5.3Aufgabe 3: Duplikate entfernen – Variante 1
5.5.4Aufgabe 4: Duplikate entfernen – Variante 2
5.5.5Aufgabe 5: Hauptstädte
5.5.6Aufgabe 6: Häufigkeiten von Namen
5.5.7Aufgabe 7: Objekte mit Dictionary selbst gebaut
5.5.8Aufgabe 8: Rotation um eine oder mehrere Positionen
5.5.9Aufgabe 9: Dreieckige Liste: Upside Down
6Ergänzendes Wissen
6.1Benutzereingaben input()
6.2Zufallswerte und das Modul random
6.3Besonderheiten von Parametern
6.3.1Normale Parameter mit Position bzw. Name
6.3.2Parameter mit Defaultwert
6.3.3Var Args – variable Anzahl an Argumenten
6.4Ternary-Operator
6.5Aufzählungen mit Enum
6.6break, continue und else in Schleifen
6.6.1Funktionsweise von break und continue
6.6.2Wie macht man es besser?
6.6.3Besonderheit: else in Schleifen
6.7Ausdrücke mit eval() auswerten
6.8Rekursion
6.9Aufgaben und Lösungen
6.9.1Aufgabe 1: Würfelspiel
6.9.2Aufgabe 2: Temperaturumrechnung
6.9.3Aufgabe 3: Palindrom-Prüfung mit Rekursion
6.9.4Aufgabe 4: Einarmiger Bandit
IIAufstieg
7Collections Advanced
7.1Sequenzielle Datentypen
7.2Iteratoren
7.3Generatoren
7.4Datencontainer mit namedtuple
7.5Einstieg in Lambdas
7.5.1Syntax von Lambdas
7.5.2Lambdas im Einsatz mit filter(), map() und reduce()
7.5.3Lambdas im Einsatz mit sort()
7.5.4Lambdas im Einsatz mit groupby()
7.6Aufgaben und Lösungen
7.6.1Aufgabe 1: Obstkorb
7.6.2Aufgabe 2: Erwachsene aus Personenliste extrahieren
7.6.3Aufgabe 3: Eigene Implementierung von rindex()
7.6.4Aufgabe 4: Elemente eines Dictionaries allgemeingültig filtern
7.6.5Aufgabe 5: Every-N-th-Iterator
7.6.6Aufgabe 6: Greeting-Generator
7.6.7Aufgabe 7: Fibonacci-Generator
7.6.8Aufgabe 8: Sortieren und Gruppieren
8Verarbeitung von Dateien
8.1Schnelleinstieg
8.1.1Anlegen von Dateien und Verzeichnissen
8.1.2Aktuelles Verzeichnis wechseln
8.1.3Aktuelles Verzeichnis und absoluten Pfad ermitteln
8.1.4Inhalt eines Verzeichnisses auflisten
8.1.5Pfad ist Datei oder Verzeichnis?
8.1.6Auf Existenz prüfen
8.1.7Informationen in Dateien schreiben und daraus lesen
8.1.8Einfluss der Verarbeitungsmodi
8.1.9Diverse Informationen ermitteln
8.1.10Kopieren
8.1.11Umbenennen
8.1.12Löschen
8.2Praxisbeispiel: Directory-Baum darstellen
8.2.1Basisvariante
8.2.2Variante mit schönerer Darstellung
8.2.3Finale Variante mit ausgeklügelter Darstellung
8.3JSON-Verarbeitung
8.3.1JSON in eine Datei schreiben
8.3.2Lesen von JSON aus einer Datei
8.3.3Pretty Printing
8.4Aufgaben und Lösungen
8.4.1Aufgabe 1: Texte in Datei schreiben und wieder lesen
8.4.2Aufgabe 2: Dateigrößen
8.4.3Aufgabe 3: Existenzprüfung
8.4.4Aufgabe 4: Rechteprüfung
8.4.5Aufgabe 5: Verzeichnisinhalt auflisten
9Fehlerbehandlung mit Exceptions
9.1Schnelleinstieg
9.1.1Fehlerbehandlung
9.1.2Exceptions selbst auslösen – raise
9.1.3Eigene Exception-Typen definieren
9.1.4Propagation von Exceptions
9.2Fehlerbehandlung in der Praxis
9.2.1Elegante Prüfungen mit assert
9.3Automatic Resource Management (with)
9.4Aufgaben und Lösungen
9.4.1Aufgabe 1: Abgesicherter Indexzugriff – Kür mit Fallback-Wert
9.4.2Aufgabe 2: Einfacher Taschenrechner
9.4.3Aufgabe 3: Resource Handling
10Datumsverarbeitung
10.1Schnelleinstieg
10.1.1Zeitpunkte und die Klasse datetime
10.1.2Datumswerte und die Klasse date
10.1.3Zeit und die Klasse time
10.1.4Zeitdifferenzen und die Klasse timedelta
10.1.5Berechnungen
10.1.6Formatierung und Parsing
10.2Praxisbeispiel: Kalenderausgabe
10.3Aufgaben und Lösungen
10.3.1Aufgabe 1: Wochentage
10.3.2Aufgabe 2: Freitag, der 13
10.3.3Aufgabe 3: Mehrmals Freitag, der 13
10.3.4Aufgabe 4: Schaltjahre
IIIPraxisbeispiele
11Praxisbeispiel: Tic Tac Toe
11.1Spielfeld initialisieren und darstellen
11.2Setzen der Steine
11.3Prüfen auf Sieg
11.4Bausteine im Einsatz
12Praxisbeispiel: CSV-Highscore-Liste einlesen
12.1Verarbeitung von Spielständen (Highscores)
12.2Extraktion der Daten
12.3Besonderheiten der Implementierung
13Praxisbeispiel: Worträtsel
13.1Applikationsdesign – Vorüberlegungen zur Strukturierung
13.2Einlesen der verfügbaren Wörter
13.3Hilfsdatenstrukturen
13.4Datenmodell
13.4.1Datenspeicherung und Initialisierung
13.4.2Zufällige Wahl von Richtung, Position, Wort und Buchstabe
13.4.3Algorithmus zum Verstecken von Wörtern
13.4.4Wort prüfen und platzieren
13.5HTML-Erzeugung
13.6Ausgabe als HTML und Darstellung im Browser
13.7Hauptapplikation
13.8Fazit
IVSchlussgedanken
14Gute Angewohnheiten
14.1Grundregeln eines guten Programmierstils
14.1.1Keep It Human-Readable
14.1.2Keep it Understandable
14.2Coding Conventions
14.2.1PEP 8 – Coding Standard
14.2.2Zen of Python
14.2.3Namensgebung
14.2.4Dokumentation
14.2.5Programmdesign
14.2.6Parameterlisten
14.2.7Logik und Kontrollfluss
14.3Auch ans Testen denken
14.3.1Das Pytest-Framework
14.3.2Schreiben und Ausführen von Tests
15Schlusswort
VAnhang
ASchlüsselwörter im Überblick
A.1Schlüsselwörter im Überblick
BSchnelleinstieg Python-REPL
B.1Python-REPL
CWesentliche Neuerungen aus Python 3.10 im Kurzüberblick
C.1Fehlermeldungen
C.1.1Fehlermeldungen bei Zuweisungen
C.1.2Fehlermeldungen bei unvollständigen Strings
C.2Fallunterscheidungen mit match
C.3Verschiedenes
C.3.1Verbesserungen bei Kontextmanagern
C.3.2Verbesserungen der Performance
C.3.3Erweiterung bei zip()
C.3.4Verbesserungen bei Typprüfungen
Literaturverzeichnis
Index