agezerlis (11) [Avatar] Offline
Dear Vernon,

I recently started reading "The Quick Python Book, Second Edition" and I've been enjoying it quite a bit. I have read the first 7 chapters and have spotted the following typos/errata. I plan to upload more of these after I've worked through more chapters.

Alex Gezerlis


p. 16 "all the members that belong an object or module": I think this should be "all the members that belong to an object or module".

p. 17 "where we’ll make a quick survey of Python the language": I think this should be should be "where we’ll make a quick survey of the Python language" unless you mean this in contradistinction to "Python the snake" smilie

p. 20 "In the preceding code, variable x is assigned to a complex number": I think it is more appropriate to say "In the preceding code, a complex number is assigned to variable x".

pp. 21-22 One of the elements in the examples used for lists and tuples is "3L". You have not mentioned the L before, and judging by table 22.1 on p. 275 this seems to be a leftover from the previous edition.

p. 23 "This is a triple double quoted string, the only kind that can contain real newlines.": I don't get this. I just tried a triple single quoted string with real newlines and it works just fine. You also point this out on p. 39.

p. 24, 43, 100 The last prompt at the bottom of the page shouldn't be there.

p. 28 "try-except-finally-else": given the logical structure, as well as common usage, I think it makes more sense to say "try-except-else-finally".

p. 30 "<module 'wo'>": as shown in your other example on p. 118, this actually says something closer to "<module 'wo' from ''>". Incidentally, the index does not have an entry on "imp".

p. 46 "You create a listd": the "d" at the end should be removed.

p. 47 "Instead, this return: an empty list": perhaps the first colon should be replaced by an "s"?

p. 50 'x=["life","Is","Enchanting"]: the "s" in "Is" should not be in italics.

p. 54 "del(x[0])": this is inconsistent with what you've shown on pp. 49-50, i.e. the del statement is a statement, (not a method) so we say "del x[0]" not "del(x[0])". This works, however, probably because it is read as "del (x[0])".

p. 59 "to absorb any number elements not matching the other elements": I don't understand this. Perhaps you meant to say "any number of elements"?

p. 65 "The ASCII character set, which is the character set used by Python": this seems to be contradictory with what you say on the next page, i.e. "all strings in Python 3 are Unicode strings". For what it's worth, on my system if I "import sys" and then do "sys.getdefaultencoding()" then Python 2.6.4 returns "ascii", while Python 3.1.1 returns "utf-8".

p. 68 "Sometimes it’s useful to permit the last field in a joined string to contain arbitrary text, including, perhaps, substrings that may match what split splits on when reading in that data.": I don't understand what you mean by "last field in a joined string". What I do understand from your example is "the last element in the list that split returns".

p. 68 "Exceptions are explained in chapter 14, “Reading and writing files.”": I guess this was supposed to say chapter 14, "Exceptions".

p. 69 "import string": this should be preceded by a prompt, ">>>import string".

p. 69 "Strips of all dots": this should say "Strips off".

p. 72 "The first line uses maketrans to make up a translation table": maketrans appears on the second, not the first, line.

p. 72 "checks to see if they can be found in the table given as the second argument": in "x.translate(table)" the table is given as the only argument, so this should say "given as the argument".

p. 74 Here there is an erratum in the errata list. You say "string.uppercase", "string.lowercase" and "string.letters" should be replaced by "ascii_string.uppercase", "ascii_string.lowercase" and "ascii_string.letters" while in reality they should be replaced by "string.ascii_uppercase", "string.ascii_lowercase" and "string.ascii_letters".

p. 74 "usually the existing string methods is simpler and easier": this should say "are" instead of "is".

p. 76 "You can also use the positional parameters.": this sentence is at the end of a subsection on positional parameters, right before a subsection on named parameters. Thus, I think you meant to write "You can also use named parameters.".

p. 83 "6.2800000000000002": this is the output that I get using Python 2.6.4. Python 3.1.1 gives me simply "6.28".

p. 86 "del(x[key])": as before, the example you show is not consistent with the use of the del statement you showed in the main text.

p. 86 "For a complete list, see the appendix or refer to the official Python documentation.": I guess this should be "For a complete list refer to the official Python documentation.".

p. 87 Table 7.2 contains a line on "bytearray" though you have not said anything about this sequence in the main text.

p. 89 "return(result)": again, throughout the text you mention the return statement, so writing it like this might be misleading.
naomi.ceder (134) [Avatar] Offline
Re: Errata list for chapters 1-7
Thanks so much for the fixes, Alex! I'll add them to the master errata list and the changes will be made for future printings.

And by all means send more along when you find them.

And I'm glad that you're liking it!