Python Challenge

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

  1. Cover
  2. Über den Autor
  3. Titel
  4. Impressum
  5. Widmung
  6. Inhaltsverzeichnis
  7. 1 Einleitung
  8. 1.1 Aufbau der Kapitel
  9. 1.2 Grundgerüst des PyCharm-Projekts
  10. 1.3 Grundgerüst für die Unit Tests mit PyTest
  11. 1.4 Anmerkung zum Programmierstil
  12. 1.5 Anmerkung zu den Aufgaben
  13. 1.6 Ausprobieren der Beispiele und Lösungen
  14. I Grundlagen
    1. 2 Mathematische Aufgaben
    2. 2.1 Einführung
    3. 2.1.1 Römische Zahlen
    4. 2.1.2 Zahlenspielereien
    5. 2.2 Aufgaben
    6. 2.2.1 Aufgabe 1: Grundrechenarten
    7. 2.2.2 Aufgabe 2: Zahl als Text
    8. 2.2.3 Aufgabe 3: Vollkommene Zahlen
    9. 2.2.4 Aufgabe 4: Primzahlen
    10. 2.2.5 Aufgabe 5: Primzahlpaare
    11. 2.2.6 Aufgabe 6: Prüfsumme
    12. 2.2.7 Aufgabe 7: Römische Zahlen
    13. 2.2.8 Aufgabe 8: Kombinatorik
    14. 2.2.9 Aufgabe 9: Armstrong-Zahlen
    15. 2.2.10 Aufgabe 10: Max Change Calculator
    16. 2.2.11 Aufgabe 11: Befreundete Zahlen
    17. 2.2.12 Aufgabe 12: Primfaktorzerlegung
    18. 2.3 Lösungen
    19. 2.3.1 Lösung 1: Grundrechenarten
    20. 2.3.2 Lösung 2: Zahl als Text
    21. 2.3.3 Lösung 3: Vollkommene Zahlen
    22. 2.3.4 Lösung 4: Primzahlen
    23. 2.3.5 Lösung 5: Primzahlpaare
    24. 2.3.6 Lösung 6: Prüfsumme
    25. 2.3.7 Lösung 7: Römische Zahlen
    26. 2.3.8 Lösung 8: Kombinatorik
    27. 2.3.9 Lösung 9: Armstrong-Zahlen
    28. 2.3.10 Lösung 10: Max Change Calculator
    29. 2.3.11 Lösung 11: Befreundete Zahlen
    30. 2.3.12 Lösung 12: Primfaktorzerlegung
    31. 3 Rekursion
    32. 3.1 Einführung
    33. 3.1.1 Mathematische Beispiele
    34. 3.1.2 Algorithmische Beispiele
    35. 3.1.3 Typische Probleme: Endlose Aufrufe und RecursionError
    36. 3.2 Aufgaben
    37. 3.2.1 Aufgabe 1: Fibonacci
    38. 3.2.2 Aufgabe 2: Ziffern verarbeiten
    39. 3.2.3 Aufgabe 3: ggT / GCD
    40. 3.2.4 Aufgabe 4: Reverse String
    41. 3.2.5 Aufgabe 5: Array Sum
    42. 3.2.6 Aufgabe 6: Array Min
    43. 3.2.7 Aufgabe 7: Konvertierungen
    44. 3.2.8 Aufgabe 8: Exponentialfunktion
    45. 3.2.9 Aufgabe 9: Pascal’sches Dreieck
    46. 3.2.10 Aufgabe 10: Zahlenpalindrome
    47. 3.2.11 Aufgabe 11: Permutationen
    48. 3.2.12 Aufgabe 12: Count Substrings
    49. 3.2.13 Aufgabe 13: Lineal
    50. 3.3 Lösungen
    51. 3.3.1 Lösung 1: Fibonacci
    52. 3.3.2 Lösung 2: Ziffern verarbeiten
    53. 3.3.3 Lösung 3: ggT / GCD
    54. 3.3.4 Lösung 4: Reverse String
    55. 3.3.5 Lösung 5: Array Sum
    56. 3.3.6 Lösung 6: Array Min
    57. 3.3.7 Lösung 7: Konvertierungen
    58. 3.3.8 Lösung 8: Exponentialfunktion
    59. 3.3.9 Lösung 9: Pascal’sches Dreieck
    60. 3.3.10 Lösung 10: Zahlenpalindrome
    61. 3.3.11 Lösung 11: Permutationen
    62. 3.3.12 Lösung 12: Count Substrings
    63. 3.3.13 Lösung 13: Lineal
    64. 4 Strings
    65. 4.1 Einführung
    66. 4.2 Aufgaben
    67. 4.2.1 Aufgabe 1: Zahlenumwandlungen
    68. 4.2.2 Aufgabe 2: Joiner
    69. 4.2.3 Aufgabe 3: Reverse String
    70. 4.2.4 Aufgabe 4: Palindrom
    71. 4.2.5 Aufgabe 5: No Duplicate Chars
    72. 4.2.6 Aufgabe 6: Doppelte Buchstaben entfernen
    73. 4.2.7 Aufgabe 7: Capitalize
    74. 4.2.8 Aufgabe 8: Rotation
    75. 4.2.9 Aufgabe 9: Wohlgeformte Klammern
    76. 4.2.10 Aufgabe 10: Anagramm
    77. 4.2.11 Aufgabe 11: Morse Code
    78. 4.2.12 Aufgabe 12: Pattern Checker
    79. 4.2.13 Aufgabe 13: Tennis-Punktestand
    80. 4.2.14 Aufgabe 14: Versionsnummern
    81. 4.2.15 Aufgabe 15: Konvertierung str_to_number
    82. 4.2.16 Aufgabe 16: Print Tower
    83. 4.2.17 Aufgabe 17: Gefüllter Rahmen
    84. 4.2.18 Aufgabe 18: Vokale raten
    85. 4.3 Lösungen
    86. 4.3.1 Lösung 1: Zahlenumwandlungen
    87. 4.3.2 Lösung 2: Joiner
    88. 4.3.3 Lösung 3: Reverse String
    89. 4.3.4 Lösung 4: Palindrom
    90. 4.3.5 Lösung 5: No Duplicate Chars
    91. 4.3.6 Lösung 6: Doppelte Buchstaben entfernen
    92. 4.3.7 Lösung 7: Capitalize
    93. 4.3.8 Lösung 8: Rotation
    94. 4.3.9 Lösung 9: Wohlgeformte Klammern
    95. 4.3.10 Lösung 10: Anagramm
    96. 4.3.11 Lösung 11: Morse Code
    97. 4.3.12 Lösung 12: Pattern Checker
    98. 4.3.13 Lösung 13: Tennis-Punktestand
    99. 4.3.14 Lösung 14: Versionsnummern
    100. 4.3.15 Lösung 15: Konvertierung str_to_number
    101. 4.3.16 Lösung 16: Print Tower
    102. 4.3.17 Lösung 17: Gefüllter Rahmen
    103. 4.3.18 Lösung 18: Vokale raten
    104. 5 Basisdatenstrukturen: Listen, Sets und Dictionaries
    105. 5.1 Einführung
    106. 5.1.1 Sequenzielle Datentypen
    107. 5.1.2 Listen
    108. 5.1.3 Mengen (Sets)
    109. 5.1.4 Schlüssel-Wert-Abbildungen (Dictionaries)
    110. 5.1.5 Der Stack als LIFO-Datenstruktur
    111. 5.1.6 Die Queue als FIFO-Datenstruktur
    112. 5.2 Aufgaben
    113. 5.2.1 Aufgabe 1: Gemeinsame Elemente
    114. 5.2.2 Aufgabe 2: Eigener Stack
    115. 5.2.3 Aufgabe 3: List Reverse
    116. 5.2.4 Aufgabe 4: Duplikate entfernen
    117. 5.2.5 Aufgabe 5: Maximaler Gewinn
    118. 5.2.6 Aufgabe 6: Längstes Teilstück
    119. 5.2.7 Aufgabe 7: Wohlgeformte Klammern
    120. 5.2.8 Aufgabe 8: Pascal’sches Dreieck
    121. 5.2.9 Aufgabe 9: Check Magic Triangle
    122. 5.2.10 Aufgabe 10: Häufigste Elemente
    123. 5.2.11 Aufgabe 11: Addition von Ziffern
    124. 5.2.12 Aufgabe 12: List Merge
    125. 5.2.13 Aufgabe 13: Excel Magic Select
    126. 5.2.14 Aufgabe 14: Stack Based Queue
    127. 5.3 Lösungen
    128. 5.3.1 Lösung 1: Gemeinsame Elemente
    129. 5.3.2 Lösung 2: Eigener Stack
    130. 5.3.3 Lösung 3: List Reverse
    131. 5.3.4 Lösung 4: Duplikate entfernen
    132. 5.3.5 Lösung 5: Maximaler Gewinn
    133. 5.3.6 Lösung 6: Längstes Teilstück
    134. 5.3.7 Lösung 7: Wohlgeformte Klammern
    135. 5.3.8 Lösung 8: Pascal’sches Dreieck
    136. 5.3.9 Lösung 9: Check Magic Triangle
    137. 5.3.10 Lösung 10: Häufigste Elemente
    138. 5.3.11 Lösung 11: Addition von Ziffern
    139. 5.3.12 Lösung 12: List Merge
    140. 5.3.13 Lösung 13: Excel Magic Select
    141. 5.3.14 Lösung 14: Stack Based Queue
    142. 6 Arrays
    143. 6.1 Einführung
    144. 6.1.1 Eindimensionale Arrays
    145. 6.1.2 Mehrdimensionale Arrays
    146. 6.1.3 Typische Fehler
    147. 6.1.4 Besonderheiten
    148. 6.1.5 Rekapitulation: NumPy
    149. 6.2 Aufgaben
    150. 6.2.1 Aufgabe 1: Gerade vor ungeraden Zahlen
    151. 6.2.2 Aufgabe 2: Flip
    152. 6.2.3 Aufgabe 3: Palindrom
    153. 6.2.4 Aufgabe 4: Inplace Rotate
    154. 6.2.5 Aufgabe 5: Jewels Board Init
    155. 6.2.6 Aufgabe 6: Jewels Board Erase Diamonds
    156. 6.2.7 Aufgabe 7: Spiral-Traversal
    157. 6.2.8 Aufgabe 8: Add One to Array As Number
    158. 6.2.9 Aufgabe 9: Sudoku-Checker
    159. 6.2.10 Aufgabe 10: Flood-Fill
    160. 6.2.11 Aufgabe 11: Array Min und Max
    161. 6.2.12 Aufgabe 12: Array Split
    162. 6.2.13 Aufgabe 13: Minesweeper Board
    163. 6.3 Lösungen
    164. 6.3.1 Lösung 1: Gerade vor ungeraden Zahlen
    165. 6.3.2 Lösung 2: Flip
    166. 6.3.3 Lösung 3: Palindrom
    167. 6.3.4 Lösung 4: Inplace Rotate
    168. 6.3.5 Lösung 5: Jewels Board Init
    169. 6.3.6 Lösung 6: Jewels Board Erase Diamonds
    170. 6.3.7 Lösung 7: Spiral-Traversal
    171. 6.3.8 Lösung 8: Add One to Array As Number
    172. 6.3.9 Lösung 9: Sudoku-Checker
    173. 6.3.10 Lösung 10: Flood-Fill
    174. 6.3.11 Lösung 11: Array Min und Max
    175. 6.3.12 Lösung 12: Array Split
    176. 6.3.13 Lösung 13: Minesweeper Board
  15. II Fortgeschrittenere und kniffligere Themen
    1. 7 Rekursion Advanced
    2. 7.1 Memoization
    3. 7.1.1 Memoization für Fibonacci-Zahlen
    4. 7.1.2 Memoization für Pascal’sches Dreieck
    5. 7.1.3 Memoization mit Python-Bordmitteln
    6. 7.2 Backtracking
    7. 7.2.1 n-Damen-Problem
    8. 7.3 Aufgaben
    9. 7.3.1 Aufgabe 1: Türme von Hanoi
    10. 7.3.2 Aufgabe 2: Edit Distance
    11. 7.3.3 Aufgabe 3: Longest Common Subsequence
    12. 7.3.4 Aufgabe 4: Weg aus Labyrinth
    13. 7.3.5 Aufgabe 5: Sudoku-Solver
    14. 7.3.6 Aufgabe 6: Math Operator Checker
    15. 7.3.7 Aufgabe 7: Wassereimer-Problem
    16. 7.3.8 Aufgabe 8: Alle Palindrom-Teilstrings
    17. 7.3.9 Aufgabe 9: n-Damen-Problem
    18. 7.4 Lösungen
    19. 7.4.1 Lösung 1: Türme von Hanoi
    20. 7.4.2 Lösung 2: Edit Distance
    21. 7.4.3 Lösung 3: Longest Common Subsequence
    22. 7.4.4 Lösung 4: Weg aus Labyrinth
    23. 7.4.5 Lösung 5: Sudoku-Solver
    24. 7.4.6 Lösung 6: Math Operator Checker
    25. 7.4.7 Lösung 7: Wassereimer-Problem
    26. 7.4.8 Lösung 8: Alle Palindrom-Teilstrings
    27. 7.4.9 Lösung 9: n-Damen-Problem
    28. 8 Binärbäume
    29. 8.1 Einführung
    30. 8.1.1 Aufbau, Begrifflichkeiten und Anwendungsbeispiele
    31. 8.1.2 Binärbäume
    32. 8.1.3 Binärbäume mit Ordnung: binäre Suchbäume
    33. 8.1.4 Traversierungen
    34. 8.1.5 Balancierte Bäume und weitere Eigenschaften
    35. 8.1.6 Bäume für die Beispiele und Übungsaufgaben
    36. 8.2 Aufgaben
    37. 8.2.1 Aufgabe 1: Tree Traversal
    38. 8.2.2 Aufgabe 2: In-, Pre- und Postorder iterativ
    39. 8.2.3 Aufgabe 3: Tree-Höhe berechnen
    40. 8.2.4 Aufgabe 4: Kleinster gemeinsamer Vorfahre
    41. 8.2.5 Aufgabe 5: Breadth-First
    42. 8.2.6 Aufgabe 6: Level Sum
    43. 8.2.7 Aufgabe 7: Tree Rotate
    44. 8.2.8 Aufgabe 8: Rekonstruktion
    45. 8.2.9 Aufgabe 9: Math Evaluation
    46. 8.2.10 Aufgabe 10: Symmetrie
    47. 8.2.11 Aufgabe 11: Check Binary Search Tree
    48. 8.2.12 Aufgabe 12: Vollständigkeit
    49. 8.2.13 Aufgabe 13: Tree Printer
    50. 8.3 Lösungen
    51. 8.3.1 Lösung 1: Tree Traversal
    52. 8.3.2 Lösung 2: In-, Pre- und Postorder iterativ
    53. 8.3.3 Lösung 3: Tree-Höhe berechnen
    54. 8.3.4 Lösung 4: Kleinster gemeinsamer Vorfahre
    55. 8.3.5 Lösung 5: Breadth-First
    56. 8.3.6 Lösung 6: Level Sum
    57. 8.3.7 Lösung 7: Tree Rotate
    58. 8.3.8 Lösung 8: Rekonstruktion
    59. 8.3.9 Lösung 9: Math Evaluation
    60. 8.3.10 Lösung 10: Symmetrie
    61. 8.3.11 Lösung 11: Check Binary Search Tree
    62. 8.3.12 Lösung 12: Vollständigkeit
    63. 8.3.13 Lösung 13: Tree Printer
    64. 9 Suchen und Sortieren
    65. 9.1 Einführung Suchen
    66. 9.1.1 Binärsuche
    67. 9.2 Einführung Sortieren
    68. 9.2.1 Insertion Sort
    69. 9.2.2 Selection Sort
    70. 9.2.3 Merge Sort
    71. 9.2.4 Quick Sort
    72. 9.2.5 Bucket Sort
    73. 9.2.6 Schlussgedanken
    74. 9.3 Aufgaben
    75. 9.3.1 Aufgabe 1: Contains All
    76. 9.3.2 Aufgabe 2: Partitionierung
    77. 9.3.3 Aufgabe 3: Binärsuche
    78. 9.3.4 Aufgabe 4: Insertion Sort
    79. 9.3.5 Aufgabe 5: Selection Sort
    80. 9.3.6 Aufgabe 6: Quick Sort
    81. 9.3.7 Aufgabe 7: Bucket Sort
    82. 9.3.8 Aufgabe 8: Suche in rotierten Daten
    83. 9.4 Lösungen
    84. 9.4.1 Lösung 1: Contains All
    85. 9.4.2 Lösung 2: Partitionierung
    86. 9.4.3 Lösung 3: Binärsuche
    87. 9.4.4 Lösung 4: Insertion Sort
    88. 9.4.5 Lösung 5: Selection Sort
    89. 9.4.6 Lösung 6: Quick Sort
    90. 9.4.7 Lösung 7: Bucket Sort
    91. 9.4.8 Lösung 8: Suche in rotierten Daten
    92. 10 Schlusswort und ergänzende Literatur
    93. 10.1 Schlusswort
    94. 10.1.1 Gelerntes pro Kapitel
    95. 10.1.2 Bedenkenswertes
    96. 10.2 Knobelaufgaben
    97. 10.2.1 Goldsäcke – Fälschung entdecken
    98. 10.2.2 Pferderennen – schnellste drei Pferde ermitteln
    99. 10.3 Ergänzende Literatur
  16. III Anhang
    1. A Kurzeinführung Pytest
    2. A.1 Schreiben und Ausführen von Tests
    3. A.1.1 Installation von Pytest
    4. A.1.2 Beispiel: Ein erster Unit Test
    5. A.1.3 Ausführen von Tests
    6. A.1.4 Behandlung erwarteter Exceptions
    7. A.1.5 Parametrisierte Tests mit Pytest
    8. A.2 Weiterführende Literatur zu Pytest
    9. B Kurzeinführung Dekoratoren
    10. C Schnelleinstieg O-Notation
    11. C.1 Abschätzungen mit der O-Notation
    12. C.1.1 Komplexitätsklassen
    13. C.1.2 Komplexität und Programmlaufzeit
  17. Literaturverzeichnis
  18. Index
  19. Fußnoten

Product information

  • Title: Python Challenge
  • Author(s): Michael Inden
  • Release date: January 2021
  • Publisher(s): dpunkt
  • ISBN: 9783864908095