Читать книгу 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

Kanban

Подняться наверх