Errata zum Grundkurs »Python« (2018)

Diese Seite enthält Updates und Errata zum Buch »Python — Der Grundkurs«.

S. 34 (Hello World)

Wenn Sie unter macOS den Editor TextEdit verwenden, müssen Sie vor dem erstmaligen Speichern Format/In reinen Text umwandeln ausführen.

S. 43 (Thonny)

Wenn Sie Thonny auch für fortgeschrittene Beispiele einsetzen, stolpern Sie über kurz oder lang über den Fehler module not found. Das liegt daran, dass Thonny eine eigene Python-Version samt Modulen verwaltet. Sie müssen das fehlende Modul daher innerhalb von Thonny installieren. Wie das geht, habe ich hier beschrieben:

https://kofler.info/modulverwaltung-in-thonny

S. 63 (Gültigkeitsbereich von Variablen)

Um die Gültigkeitsregeln von Python mit anderen Sprachen zu vergleichen, habe ich am Beginn der Seite ein winziges Java-Listing angegeben und prompt mit einen Fehler eingebaut: Statt if(1) ist in Java if(true) notwendig.

S. 108 (Mit Zeiten rechnen)

Im Listing am Seitenende fehlt eine Zeile zur Initialisierung der Variablen minute. Das vollständige Listing sieht so aus:

from datetime import date, datetime, timedelta
today = datetime.now().date()  # date
week = timedelta(weeks=1)      # timedelta
print(today, today + week, today + 3 * week)
  2018-06-27  2018-07-04  2018-07-18

now = datetime.now()           # datetime
minute = timedelta(minutes=1)  # timedelta (<-- diese Zeile fehlt im Buch)
soon = now + 10 * minute       # datetime
print(now.time(), soon.time())
  17:23:43.116115 17:33:43.116115
S. 113 (verschachtelte Listen)

Die Ausgabe des letzten Beispiels lautet 2, nicht 1 wie im Buch fehlerhaft angegeben.

lst = [[1, 2],  # verschachtelte Liste
       [3, 4]]
lst[0]          # das erste Element ist selbst eine Liste
  [1, 2]
lst[0][1]       # das zweite Element der ersten Teilliste
  2
 ^^^
S. 126 (Sets)

Auf S. 126 unten / S. 127 oben wird die Methode get vorgestellt. Die beiden Absätze und die dazugehörigen Listings gelten allerdings für Dictionaries und nicht für Sets.

S. 208 (Private Instanzvariablen)

In das Listung auf S. 208 haben sich gleich drei Fehler eingeschlichen. Zum einen fehlt zweimal self, zum anderen muss es in der letzten Zeile MyClass anstelle von Test lauten. Korrekt sieht das Listing so aus:

class MyClass():
    def __init__(self):
        self._privat = 1
        ^^^^^
        self.__nochPrivater = 2
        ^^^^^
obj = MyClass()
print(obj._privat)                 # Ausgabe 1
print(obj._MyClass__nochPrivater)  # Ausgabe 2
           ^^^^^^^
S. 222 und S. 226 (Figure-Klasse)

In der letzten Zeile des Listings auf Seite 226 habe ich die Variablen col und row vertauscht. Die Anweisung sieht korrekt so aus:

return 'abcdefgh'[col] + '12345678'[row]

Aufgrund dieses Fehlers stimmt auch die Testausgabe auf S. 225 nicht. Sie muss so aussehen:

# Knight@e5 ['f7', 'g6', 'd7', 'c6', 'f3', 'g4', 'd3', 'c4']
# Bishop@b3 ['a2', 'a4', 'c4', 'c2', 'd5', 'd1', 'e6', 'f7', 'g8']
# Knight@h8 ['g6', 'f7']
S. 424 (Wiederholungen zum Kapitel »Zahlen«)

12//7 ergibt natürlich 1, nicht 2.


Letzte Änderung 23.9.2019. Vielen Dank an alle Leser, die mir Feedback geben!