Fehlerverzeichnis
"Errare humanum est, perseverare autem diabolicum" (Zu Irren ist menschlich, aber darin zu beharren ist teuflich"
Ob es nun der Fehlerteufel oder Murphy ist, - oder vielleicht doch nur der Autor, - ist eigentlich egal. Ärgerlich ist, dass auch im besten Buch, Fehler vorkommen. Dafür möchten wir uns bei Ihnen entschuldigen.
Gerne ermutigen wir jeden Leser und jede Leserin unseres Buches, uns über gefundene Fehler zu unterrichten, sodass wir unsere Errata vervollständigen können und dafür sorgen können, dass diese Fehler in weiteren Auflagen nicht enthalten sein werden.
-
Seite 31:
In der Tabelle fehlten die geschweiften Klammern für die Ausgabe eines kleinen Pi. Es sollteprint(u"\N{GREEK SMALL LETTER PI}")
stattprint(u"\NGREEK SMALL LETTER PI")
heißen.
-
Seite 75:
Die erste else-Anweisung ist leider falsch:
Stattelse:
müsste dort stehenelif guess < to_be_guessed:
- Die Tabelle auf Seite 93 enthielt einige Fehler. Im folgenden sehen wir die verbesserte Version:
-
Die Formel in der zweiten Aufgabe auf Seite 96 muss korrekt wie folgt lauten:
- Seite 108:
Die Methode copy der Klasse dict erzeugt nur flache Kopien eines Dictionarys, wie wir im Folgenden sehen können:>>> en_de = {"red" : "rot", "green" : "grün", "blue" : "blau"} >>> de_fr = {"rot" : "rouge", "grün" : "vert", "blau" : "bleu"} >>> d = {"en_de" : en_de, "de_fr" : de_fr } >>> d2 = d.copy() >>> d["en_de"]["brown"] = "braun" >>> d {'de_fr': {'rot': 'rouge', 'blau': 'bleu', 'grün': 'vert'}, 'en_de': {'brown': 'braun', 'green': 'grün', 'blue': 'blau', 'red': 'rot'}} >>> d2 {'de_fr': {'rot': 'rouge', 'blau': 'bleu', 'grün': 'vert'}, 'en_de': {'brown': 'braun', 'green': 'grün', 'blue': 'blau', 'red': 'rot'}} >>>
Wir sehen, dass wir nicht nur das Dictionary d sondern auch das Dictionary d2 verändert haben. Um dieses Problem zu beheben, erzeugen wir mit deepcopy eine Kopie:>>> from copy import deepcopy >>> en_de = {"red" : "rot", "green" : "grün", "blue" : "blau"} >>> de_fr = {"rot" : "rouge", "grün" : "vert", "blau" : "bleu"} >>> d = {"en_de" : en_de, "de_fr" : de_fr } >>> >>> d2 = deepcopy(d) >>> >>> d["en_de"]["brown"] = "braun" >>> >>> d {'en_de': {'blue': 'blau', 'brown': 'braun', 'green': 'grün', 'red': 'rot'}, 'de_fr': {'grün': 'vert', 'blau': 'bleu', 'rot': 'rouge'}} >>> d2 {'en_de': {'blue': 'blau', 'green': 'grün', 'red': 'rot'}, 'de_fr': {'grün': 'vert', 'blau': 'bleu', 'rot': 'rouge'}} >>> >>> d2["de_fr"]["braun"] = "jaune" >>> >>> d {'de_fr': {'blau': 'bleu', 'rot': 'rouge', 'grün': 'vert'}, 'en_de': {'red': 'rot', 'brown': 'braun', 'green': 'grün', 'blue': 'blau'}} >>> d2 {'de_fr': {'blau': 'bleu', 'braun': 'jaune', 'rot': 'rouge', 'grün': 'vert'}, 'en_de': {'red': 'rot', 'green': 'grün', 'blue': 'blau'}} >>>
- Seite 114:
Die Funktion fib_interval im Buch ist korrekt, aber das folgende Programm dürfte etwas verständlicher und übersichtlicher sein:def fib_intervall(x): """ returns the largest fibonacci number smaller than x and the least fibonacci number greater than or equal x""" if x < 0: return -1 old, new = 0,1 while True: if new < x: old,new = new,old+new else: return (old, new) for i in (0, 1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 14) : print(i, fib_intervall(i))
Das obige Programm liefert die folgenden Ergebnisse zurück:0 (0, 1) 1 (0, 1) 2 (1, 2) 3 (2, 3) 4 (3, 5) 5 (3, 5) 7 (5, 8) 8 (5, 8) 9 (8, 13) 12 (8, 13) 13 (8, 13) 14 (13, 21)
- Seite 240:
Bei "binäre Operatoren" sollte statt "__div__" die Methode "__truediv__" stehen. Ebenso sollte bei den "Erweiterten Zuweisungen" der Ausdruck "itruediv" statt "__idiv__" stehen.
- Seite 366:
Die Seite 366 ist leider sehr verwirrend, was vor allen Dingen auf einer Verwechslung der mathematischen Begriffe "Variatonen" und "Kombinationen" beruht. Sie finden eine verbesserte Version in diesem PDF