Book description
Dieses Buch bietet Ihnen ein breit gefächertes Spektrum von über 100 Übungsaufgaben und Programmierpuzzles inklusive Lösungen zum Knobeln und Erweitern Ihrer Kenntnisse zu unterschiedlichen praxisrelevanten Themengebieten.
Table of contents
- Cover
- Über den Autor
- Titel
- Impressum
- Widmung
- Inhaltsverzeichnis
- 1 Einleitung
- 1.1 Aufbau der Kapitel
- 1.2 Grundgerüst des PyCharm-Projekts
- 1.3 Grundgerüst für die Unit Tests mit PyTest
- 1.4 Anmerkung zum Programmierstil
- 1.5 Anmerkung zu den Aufgaben
- 1.6 Ausprobieren der Beispiele und Lösungen
-
I Grundlagen
- 2 Mathematische Aufgaben
- 2.1 Einführung
- 2.1.1 Römische Zahlen
- 2.1.2 Zahlenspielereien
- 2.2 Aufgaben
- 2.2.1 Aufgabe 1: Grundrechenarten
- 2.2.2 Aufgabe 2: Zahl als Text
- 2.2.3 Aufgabe 3: Vollkommene Zahlen
- 2.2.4 Aufgabe 4: Primzahlen
- 2.2.5 Aufgabe 5: Primzahlpaare
- 2.2.6 Aufgabe 6: Prüfsumme
- 2.2.7 Aufgabe 7: Römische Zahlen
- 2.2.8 Aufgabe 8: Kombinatorik
- 2.2.9 Aufgabe 9: Armstrong-Zahlen
- 2.2.10 Aufgabe 10: Max Change Calculator
- 2.2.11 Aufgabe 11: Befreundete Zahlen
- 2.2.12 Aufgabe 12: Primfaktorzerlegung
- 2.3 Lösungen
- 2.3.1 Lösung 1: Grundrechenarten
- 2.3.2 Lösung 2: Zahl als Text
- 2.3.3 Lösung 3: Vollkommene Zahlen
- 2.3.4 Lösung 4: Primzahlen
- 2.3.5 Lösung 5: Primzahlpaare
- 2.3.6 Lösung 6: Prüfsumme
- 2.3.7 Lösung 7: Römische Zahlen
- 2.3.8 Lösung 8: Kombinatorik
- 2.3.9 Lösung 9: Armstrong-Zahlen
- 2.3.10 Lösung 10: Max Change Calculator
- 2.3.11 Lösung 11: Befreundete Zahlen
- 2.3.12 Lösung 12: Primfaktorzerlegung
- 3 Rekursion
- 3.1 Einführung
- 3.1.1 Mathematische Beispiele
- 3.1.2 Algorithmische Beispiele
- 3.1.3 Typische Probleme: Endlose Aufrufe und RecursionError
- 3.2 Aufgaben
- 3.2.1 Aufgabe 1: Fibonacci
- 3.2.2 Aufgabe 2: Ziffern verarbeiten
- 3.2.3 Aufgabe 3: ggT / GCD
- 3.2.4 Aufgabe 4: Reverse String
- 3.2.5 Aufgabe 5: Array Sum
- 3.2.6 Aufgabe 6: Array Min
- 3.2.7 Aufgabe 7: Konvertierungen
- 3.2.8 Aufgabe 8: Exponentialfunktion
- 3.2.9 Aufgabe 9: Pascal’sches Dreieck
- 3.2.10 Aufgabe 10: Zahlenpalindrome
- 3.2.11 Aufgabe 11: Permutationen
- 3.2.12 Aufgabe 12: Count Substrings
- 3.2.13 Aufgabe 13: Lineal
- 3.3 Lösungen
- 3.3.1 Lösung 1: Fibonacci
- 3.3.2 Lösung 2: Ziffern verarbeiten
- 3.3.3 Lösung 3: ggT / GCD
- 3.3.4 Lösung 4: Reverse String
- 3.3.5 Lösung 5: Array Sum
- 3.3.6 Lösung 6: Array Min
- 3.3.7 Lösung 7: Konvertierungen
- 3.3.8 Lösung 8: Exponentialfunktion
- 3.3.9 Lösung 9: Pascal’sches Dreieck
- 3.3.10 Lösung 10: Zahlenpalindrome
- 3.3.11 Lösung 11: Permutationen
- 3.3.12 Lösung 12: Count Substrings
- 3.3.13 Lösung 13: Lineal
- 4 Strings
- 4.1 Einführung
- 4.2 Aufgaben
- 4.2.1 Aufgabe 1: Zahlenumwandlungen
- 4.2.2 Aufgabe 2: Joiner
- 4.2.3 Aufgabe 3: Reverse String
- 4.2.4 Aufgabe 4: Palindrom
- 4.2.5 Aufgabe 5: No Duplicate Chars
- 4.2.6 Aufgabe 6: Doppelte Buchstaben entfernen
- 4.2.7 Aufgabe 7: Capitalize
- 4.2.8 Aufgabe 8: Rotation
- 4.2.9 Aufgabe 9: Wohlgeformte Klammern
- 4.2.10 Aufgabe 10: Anagramm
- 4.2.11 Aufgabe 11: Morse Code
- 4.2.12 Aufgabe 12: Pattern Checker
- 4.2.13 Aufgabe 13: Tennis-Punktestand
- 4.2.14 Aufgabe 14: Versionsnummern
- 4.2.15 Aufgabe 15: Konvertierung str_to_number
- 4.2.16 Aufgabe 16: Print Tower
- 4.2.17 Aufgabe 17: Gefüllter Rahmen
- 4.2.18 Aufgabe 18: Vokale raten
- 4.3 Lösungen
- 4.3.1 Lösung 1: Zahlenumwandlungen
- 4.3.2 Lösung 2: Joiner
- 4.3.3 Lösung 3: Reverse String
- 4.3.4 Lösung 4: Palindrom
- 4.3.5 Lösung 5: No Duplicate Chars
- 4.3.6 Lösung 6: Doppelte Buchstaben entfernen
- 4.3.7 Lösung 7: Capitalize
- 4.3.8 Lösung 8: Rotation
- 4.3.9 Lösung 9: Wohlgeformte Klammern
- 4.3.10 Lösung 10: Anagramm
- 4.3.11 Lösung 11: Morse Code
- 4.3.12 Lösung 12: Pattern Checker
- 4.3.13 Lösung 13: Tennis-Punktestand
- 4.3.14 Lösung 14: Versionsnummern
- 4.3.15 Lösung 15: Konvertierung str_to_number
- 4.3.16 Lösung 16: Print Tower
- 4.3.17 Lösung 17: Gefüllter Rahmen
- 4.3.18 Lösung 18: Vokale raten
- 5 Basisdatenstrukturen: Listen, Sets und Dictionaries
- 5.1 Einführung
- 5.1.1 Sequenzielle Datentypen
- 5.1.2 Listen
- 5.1.3 Mengen (Sets)
- 5.1.4 Schlüssel-Wert-Abbildungen (Dictionaries)
- 5.1.5 Der Stack als LIFO-Datenstruktur
- 5.1.6 Die Queue als FIFO-Datenstruktur
- 5.2 Aufgaben
- 5.2.1 Aufgabe 1: Gemeinsame Elemente
- 5.2.2 Aufgabe 2: Eigener Stack
- 5.2.3 Aufgabe 3: List Reverse
- 5.2.4 Aufgabe 4: Duplikate entfernen
- 5.2.5 Aufgabe 5: Maximaler Gewinn
- 5.2.6 Aufgabe 6: Längstes Teilstück
- 5.2.7 Aufgabe 7: Wohlgeformte Klammern
- 5.2.8 Aufgabe 8: Pascal’sches Dreieck
- 5.2.9 Aufgabe 9: Check Magic Triangle
- 5.2.10 Aufgabe 10: Häufigste Elemente
- 5.2.11 Aufgabe 11: Addition von Ziffern
- 5.2.12 Aufgabe 12: List Merge
- 5.2.13 Aufgabe 13: Excel Magic Select
- 5.2.14 Aufgabe 14: Stack Based Queue
- 5.3 Lösungen
- 5.3.1 Lösung 1: Gemeinsame Elemente
- 5.3.2 Lösung 2: Eigener Stack
- 5.3.3 Lösung 3: List Reverse
- 5.3.4 Lösung 4: Duplikate entfernen
- 5.3.5 Lösung 5: Maximaler Gewinn
- 5.3.6 Lösung 6: Längstes Teilstück
- 5.3.7 Lösung 7: Wohlgeformte Klammern
- 5.3.8 Lösung 8: Pascal’sches Dreieck
- 5.3.9 Lösung 9: Check Magic Triangle
- 5.3.10 Lösung 10: Häufigste Elemente
- 5.3.11 Lösung 11: Addition von Ziffern
- 5.3.12 Lösung 12: List Merge
- 5.3.13 Lösung 13: Excel Magic Select
- 5.3.14 Lösung 14: Stack Based Queue
- 6 Arrays
- 6.1 Einführung
- 6.1.1 Eindimensionale Arrays
- 6.1.2 Mehrdimensionale Arrays
- 6.1.3 Typische Fehler
- 6.1.4 Besonderheiten
- 6.1.5 Rekapitulation: NumPy
- 6.2 Aufgaben
- 6.2.1 Aufgabe 1: Gerade vor ungeraden Zahlen
- 6.2.2 Aufgabe 2: Flip
- 6.2.3 Aufgabe 3: Palindrom
- 6.2.4 Aufgabe 4: Inplace Rotate
- 6.2.5 Aufgabe 5: Jewels Board Init
- 6.2.6 Aufgabe 6: Jewels Board Erase Diamonds
- 6.2.7 Aufgabe 7: Spiral-Traversal
- 6.2.8 Aufgabe 8: Add One to Array As Number
- 6.2.9 Aufgabe 9: Sudoku-Checker
- 6.2.10 Aufgabe 10: Flood-Fill
- 6.2.11 Aufgabe 11: Array Min und Max
- 6.2.12 Aufgabe 12: Array Split
- 6.2.13 Aufgabe 13: Minesweeper Board
- 6.3 Lösungen
- 6.3.1 Lösung 1: Gerade vor ungeraden Zahlen
- 6.3.2 Lösung 2: Flip
- 6.3.3 Lösung 3: Palindrom
- 6.3.4 Lösung 4: Inplace Rotate
- 6.3.5 Lösung 5: Jewels Board Init
- 6.3.6 Lösung 6: Jewels Board Erase Diamonds
- 6.3.7 Lösung 7: Spiral-Traversal
- 6.3.8 Lösung 8: Add One to Array As Number
- 6.3.9 Lösung 9: Sudoku-Checker
- 6.3.10 Lösung 10: Flood-Fill
- 6.3.11 Lösung 11: Array Min und Max
- 6.3.12 Lösung 12: Array Split
- 6.3.13 Lösung 13: Minesweeper Board
-
II Fortgeschrittenere und kniffligere Themen
- 7 Rekursion Advanced
- 7.1 Memoization
- 7.1.1 Memoization für Fibonacci-Zahlen
- 7.1.2 Memoization für Pascal’sches Dreieck
- 7.1.3 Memoization mit Python-Bordmitteln
- 7.2 Backtracking
- 7.2.1 n-Damen-Problem
- 7.3 Aufgaben
- 7.3.1 Aufgabe 1: Türme von Hanoi
- 7.3.2 Aufgabe 2: Edit Distance
- 7.3.3 Aufgabe 3: Longest Common Subsequence
- 7.3.4 Aufgabe 4: Weg aus Labyrinth
- 7.3.5 Aufgabe 5: Sudoku-Solver
- 7.3.6 Aufgabe 6: Math Operator Checker
- 7.3.7 Aufgabe 7: Wassereimer-Problem
- 7.3.8 Aufgabe 8: Alle Palindrom-Teilstrings
- 7.3.9 Aufgabe 9: n-Damen-Problem
- 7.4 Lösungen
- 7.4.1 Lösung 1: Türme von Hanoi
- 7.4.2 Lösung 2: Edit Distance
- 7.4.3 Lösung 3: Longest Common Subsequence
- 7.4.4 Lösung 4: Weg aus Labyrinth
- 7.4.5 Lösung 5: Sudoku-Solver
- 7.4.6 Lösung 6: Math Operator Checker
- 7.4.7 Lösung 7: Wassereimer-Problem
- 7.4.8 Lösung 8: Alle Palindrom-Teilstrings
- 7.4.9 Lösung 9: n-Damen-Problem
- 8 Binärbäume
- 8.1 Einführung
- 8.1.1 Aufbau, Begrifflichkeiten und Anwendungsbeispiele
- 8.1.2 Binärbäume
- 8.1.3 Binärbäume mit Ordnung: binäre Suchbäume
- 8.1.4 Traversierungen
- 8.1.5 Balancierte Bäume und weitere Eigenschaften
- 8.1.6 Bäume für die Beispiele und Übungsaufgaben
- 8.2 Aufgaben
- 8.2.1 Aufgabe 1: Tree Traversal
- 8.2.2 Aufgabe 2: In-, Pre- und Postorder iterativ
- 8.2.3 Aufgabe 3: Tree-Höhe berechnen
- 8.2.4 Aufgabe 4: Kleinster gemeinsamer Vorfahre
- 8.2.5 Aufgabe 5: Breadth-First
- 8.2.6 Aufgabe 6: Level Sum
- 8.2.7 Aufgabe 7: Tree Rotate
- 8.2.8 Aufgabe 8: Rekonstruktion
- 8.2.9 Aufgabe 9: Math Evaluation
- 8.2.10 Aufgabe 10: Symmetrie
- 8.2.11 Aufgabe 11: Check Binary Search Tree
- 8.2.12 Aufgabe 12: Vollständigkeit
- 8.2.13 Aufgabe 13: Tree Printer
- 8.3 Lösungen
- 8.3.1 Lösung 1: Tree Traversal
- 8.3.2 Lösung 2: In-, Pre- und Postorder iterativ
- 8.3.3 Lösung 3: Tree-Höhe berechnen
- 8.3.4 Lösung 4: Kleinster gemeinsamer Vorfahre
- 8.3.5 Lösung 5: Breadth-First
- 8.3.6 Lösung 6: Level Sum
- 8.3.7 Lösung 7: Tree Rotate
- 8.3.8 Lösung 8: Rekonstruktion
- 8.3.9 Lösung 9: Math Evaluation
- 8.3.10 Lösung 10: Symmetrie
- 8.3.11 Lösung 11: Check Binary Search Tree
- 8.3.12 Lösung 12: Vollständigkeit
- 8.3.13 Lösung 13: Tree Printer
- 9 Suchen und Sortieren
- 9.1 Einführung Suchen
- 9.1.1 Binärsuche
- 9.2 Einführung Sortieren
- 9.2.1 Insertion Sort
- 9.2.2 Selection Sort
- 9.2.3 Merge Sort
- 9.2.4 Quick Sort
- 9.2.5 Bucket Sort
- 9.2.6 Schlussgedanken
- 9.3 Aufgaben
- 9.3.1 Aufgabe 1: Contains All
- 9.3.2 Aufgabe 2: Partitionierung
- 9.3.3 Aufgabe 3: Binärsuche
- 9.3.4 Aufgabe 4: Insertion Sort
- 9.3.5 Aufgabe 5: Selection Sort
- 9.3.6 Aufgabe 6: Quick Sort
- 9.3.7 Aufgabe 7: Bucket Sort
- 9.3.8 Aufgabe 8: Suche in rotierten Daten
- 9.4 Lösungen
- 9.4.1 Lösung 1: Contains All
- 9.4.2 Lösung 2: Partitionierung
- 9.4.3 Lösung 3: Binärsuche
- 9.4.4 Lösung 4: Insertion Sort
- 9.4.5 Lösung 5: Selection Sort
- 9.4.6 Lösung 6: Quick Sort
- 9.4.7 Lösung 7: Bucket Sort
- 9.4.8 Lösung 8: Suche in rotierten Daten
- 10 Schlusswort und ergänzende Literatur
- 10.1 Schlusswort
- 10.1.1 Gelerntes pro Kapitel
- 10.1.2 Bedenkenswertes
- 10.2 Knobelaufgaben
- 10.2.1 Goldsäcke – Fälschung entdecken
- 10.2.2 Pferderennen – schnellste drei Pferde ermitteln
- 10.3 Ergänzende Literatur
-
III Anhang
- A Kurzeinführung Pytest
- A.1 Schreiben und Ausführen von Tests
- A.1.1 Installation von Pytest
- A.1.2 Beispiel: Ein erster Unit Test
- A.1.3 Ausführen von Tests
- A.1.4 Behandlung erwarteter Exceptions
- A.1.5 Parametrisierte Tests mit Pytest
- A.2 Weiterführende Literatur zu Pytest
- B Kurzeinführung Dekoratoren
- C Schnelleinstieg O-Notation
- C.1 Abschätzungen mit der O-Notation
- C.1.1 Komplexitätsklassen
- C.1.2 Komplexität und Programmlaufzeit
- Literaturverzeichnis
- Index
- Fußnoten
Product information
- Title: Python Challenge
- Author(s):
- Release date: January 2021
- Publisher(s): dpunkt
- ISBN: 9783864908095
You might also like
book
Applying Math with Python
Discover easy-to-follow solutions and techniques to help you to implement applied mathematical concepts such as probability, …
book
Einfach Python
Die Leser:innen werden auf Ihrer Entdeckungsreise vom IT-Experten Michael Inden begleitet. Er erklärt ihnen die Grundlagen …
book
Python für Excel
Nach wie vor ist Excel in der Geschäftswelt allgegenwärtig. Doch in den Feedback-Foren von Microsoft häufen …
book
Python 3 Crashkurs, 2nd Edition
In der ersten Hälfte des Buches werden grundlegende Programmierkonzepte wie Listen, Wörterbücher, Klassen und Schleifen erklärt. …