Errata
The errata list is a list of errors and their corrections that were found after the product was released.
The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.
Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update
Version | Location | Description | Submitted by | Date submitted |
---|---|---|---|---|
Page xx TOC Item #9 |
"Now let’s look at that request module again" |
Jørgen Lang | Apr 18, 2018 | |
Printed | Page pp 26--27 figures |
on page xxxiv, "Do not download version 2.7.", but figures of pp 26 -27are made by version 2.7.9. |
Yukitoshi Fujimura | Oct 09, 2018 |
Printed | Page 48 1st annotation |
"The highest precedence in this expression is exponentiation. 3 is 9^2." |
Eleonora Pinto de Moura | Mar 16, 2018 |
Printed | Page 48 2/3 down the page |
Next to the the expression 3 / (1 + 2) * 3 ** 2 |
George Schultz | Sep 22, 2018 |
Printed | Page 61 on the cup labeled dog_age |
If we are using the code in the Test Drive on page 60, then the cup labeled dog_age stores the string '12' not the number 12. |
Eleonora Pinto de Moura | Mar 16, 2018 |
Printed | Page 67 Sharpen your pencil Solution, 2nd item |
"We'll also need to save this somewhere so we can use it in step 4." |
Eleonora Pinto de Moura | Mar 16, 2018 |
Printed | Page 70 2nd Solution |
The solution given is the following: |
Eleonora Pinto de Moura | Mar 16, 2018 |
Page 93 Top right box, serious coding |
Wondering about precedence with Boolean operators? The relational operators (>, <,==, and so on) are highest,followed by not, or, and then and. |
Spike Py | Jan 27, 2020 | |
Printed | Page 97 Last line of the code |
The code written is: |
Eleonora Pinto de Moura | Mar 16, 2018 |
112-113 Paragraph before BULLET POINTS |
You’ve create some logic that never lets the loop end, |
Anonymous | Mar 26, 2020 | |
Printed | Page 115 Across clue list of the crossword |
There is no clue for the word 23 across. |
Eleonora Pinto de Moura | Mar 16, 2018 |
Printed | Page 123 Solution for the 1st down word |
The answer is "Ferrari" not "Ferarri". |
Eleonora Pinto de Moura | Mar 16, 2018 |
Page 129 last paragraph |
Original: "[…] the smoothie list will look like this:" |
Jørgen Lang | Mar 15, 2018 | |
Page 130 heading, description 2nd sentence |
Description says, "Pretend you're the Python Interpreter…". |
Jørgen Lang | Mar 15, 2018 | |
Page 143 annotation below 1st para |
Original: "Next, ‘strawberry’ is then assigned to the smoothies variable." |
Jørgen Lang | Feb 23, 2018 | |
Page 145 bottom annotation |
Original: "Each time we iterate, we print “Smoothie#", the index, and the smoothie at that index." |
Jørgen Lang | Mar 15, 2018 | |
Printed | Page 161 Last line of the Python Shell |
Missing a space before 18. It should be: |
Eleonora Pinto de Moura | Apr 06, 2018 |
Page 162 1st code comment below paragraph |
Original: "Scores and costs are parallel lists" |
Jørgen Lang | Mar 16, 2018 | |
Page 167 code example, annotations on the left, 2nd annotation |
Change 'cost list' to 'costs list'. (cost holds a single value) |
Jørgen Lang | Mar 03, 2018 | |
Printed | Page 167 code example |
The code written is: |
Eleonora Pinto de Moura | Apr 06, 2018 |
Printed | Page 169 Crosswords's tips |
#Portuguese printed version (I don't know if it has the same error in other language) |
Arthur Garcia | Jun 15, 2021 |
Page 176 1st pararaph, 1st sentence |
replace "previous page" with "page 153" (PDF) to establish a correct back-reference |
Jørgen Lang | Mar 04, 2018 | |
Page 177 Top "Sharpen" solution, 1st annotation, 1st sentence |
Original: |
Jørgen Lang | Mar 04, 2018 | |
Page 177 2nd "Sharpen" solution, 2nd sentence, rightmost annotation |
Intro text says "You’ll find all the code up until now listed below." while annotation says "We're just showing you the new code." |
Jørgen Lang | Mar 04, 2018 | |
Page 190 1st pararaph, last sentence |
“WOOF WOOF" and "woof woof” should probably be formatted as literal text or surrounded by quotes. |
Jørgen Lang | Mar 05, 2018 | |
Page 210 bottom code annotation |
Original: "And if we supply an argument for message, then our greet function will gladly accept that as the message argument." |
Jørgen Lang | Mar 07, 2018 | |
Page 212 1st code example, annotation on the right, last sentence |
Original: "Just make sure your calls provide any required arguments before the keywords arguments." |
Jørgen Lang | Mar 07, 2018 | |
Printed | Page 216 5th tip on the right column |
*Portuguese printed version* |
Arthur Garcia | Jun 18, 2021 |
Page 229 4th paragraph |
Original: "Moving on, we compare the 3rd and 4th index values, and the 4th value is larger, so we do not need to swap." |
Jørgen Lang | Mar 07, 2018 | |
Page 229 2nd paragraph |
Original: "[…] the index 2 value is larger than index 3 […]" |
Jørgen Lang | Mar 07, 2018 | |
Page 236 4th code annotation from bottom |
Original: "...except, when we swap two values of the score list […]" |
Jørgen Lang | Mar 08, 2018 | |
Page 238 “Nice job"-text, last paragraph |
Original: "You’ve got a brain twister ahead, and the bullet points and the crossword..." |
Jørgen Lang | Mar 08, 2018 | |
Page 241 1st para, 2nd sentence |
Original: "Take the list below and bubble sort it, showing your work just like we did on the previous two pages." |
Jørgen Lang | Mar 07, 2018 | |
Page 242 1st para, last sentence |
Original: "After you’ve done the exercises, look at the end of the chapter to see if you got it right." |
Jørgen Lang | Mar 08, 2018 | |
Printed | Page 242 Python Shell window with the first output |
*Portuguese printed version* |
Arthur Garcia | Jun 22, 2021 |
Page 249 IF...ELIF... pseudocode |
variable score is defined, and used in the IF...ELIF pseudocode section. It is used correctly in the IF portion of the code, but for all the ELIFs, it is listed as scores , a plural of the variable name. This of course will not work properly, and since scores is undefined, will result in NameError. |
Steve Lamb | Jan 02, 2019 | |
Page 253 test drive, 2nd sentence |
Original: "[…] to your analyze file." |
Jørgen Lang | Mar 12, 2018 | |
Page 273 1st para |
Original: "Or, likewise, if you omit the ending index, then slice assumes you mean to stop the end of the list:" |
Jørgen Lang | Mar 13, 2018 | |
Page 322 page 322, page 324ff, object illustrations, bottom half of page |
Introduced turtle colors are: red, pink, cyan, orange, and gray. This corresponds to the illustration on page 322. |
Jørgen Lang | Mar 21, 2018 | |
Page 324 page left, object diagram |
shape() was introduced as a method on page 316/317, ist now (on page 324) an attribute. Is being used as a method only throughout the rest of the chapter. |
Jørgen Lang | Mar 21, 2018 | |
Page 328 bottom of page (2A) |
sentence = "To do that we simply use a for/in statement over our global turtles lists." |
Jørgen Lang | Mar 22, 2018 | |
Printed | Page 335 Crosswords's tips |
**Portuguese printed version** |
Arthur Garcia | Jul 13, 2021 |
Page 336 first code annotation, top right of page |
Original: "Notice we can pass any turtle into make_square, not just slow_poke." |
Jørgen Lang | Mar 20, 2018 | |
Page 377 code example, 5th annotation, 2nd sentence |
Original: "Remember in Python a dictionary key can be any value, including integers." |
Jørgen Lang | Mar 28, 2018 | |
Page 403 code annotation bottom left |
"Let’s use the read method to get the entire contents of the lib file..." |
Jørgen Lang | Apr 02, 2018 | |
Page 407 1st code example |
Example shows text with \n sequences, but placeholders are highlighted in bold. Suggestion to highlight \n instead. |
Jørgen Lang | Apr 03, 2018 | |
Page 411 Comment to the right of placeholders |
As I understand it, global variables are visible throughout the code, including inside functions. Doesn't matter if you reference it, as a read, in 10 different functions - it will be readable. The only time this is a problem is if you want to write to that global and change it's value(s). THAT is when you need to use the global keyword. At least, that is how I interpreted your definition of the global keyword. |
Steve Lamb | Jan 05, 2019 | |
Page 411 Possible alternate function insertion for process_line |
You have an opportunity to introduce a new string method while improving the functionality of the code. Just a suggestion, but why not introduce the string replace method, and at the same time reduce number of lines of code as follows: |
Steve Lamb | Jan 05, 2019 | |
Printed | Page 411 right margin |
The error may show in e-book too. |
Kwan Kim | Nov 04, 2021 |
Page 416 page heading |
"exploring exception" should probably be plural: |
Jørgen Lang | Apr 03, 2018 | |
Page 418 page title ("running head") |
Original: "how to handle expectations". |
Jørgen Lang | Apr 03, 2018 | |
Page 421 code example below 2nd paragraph |
Original: "Let's store the crazy lib filename in a variable to…" |
Jørgen Lang | Apr 04, 2018 | |
Page 425 Bullet Points |
function and method names are formatted bold instead of fixed-width (for code). |
Jørgen Lang | Apr 17, 2018 | |
Page 426 bottom left |
Crossword 19 across: "Cleans up the ends of strings." |
Jørgen Lang | Apr 04, 2018 | |
Page 432 1st paragraph, 1st sentence |
Text: "…change your directory to the location of your crazy.py file…" |
Jørgen Lang | Apr 04, 2018 | |
Page 433 heading |
Inconsistent headings: Heading on page 426 (Coding Cross) is used throughout the book. On page 433 (solution) the heading "File i/o cross Solution" is used. |
Jørgen Lang | Apr 04, 2018 | |
Page 435 all odd pages in chapter 10 |
Throughout the book the chapter title is being used as a "running head" for odd pages. In ch10 'web services' is used instead of "using web apis". |
Jørgen Lang | Apr 07, 2018 | |
Page 436 and following pages throughout the chapter |
All these refer to the same thing, so I summarized them. |
Jørgen Lang | Apr 08, 2018 | |
Page 439 Spotify URL |
Trying the URL via a browser gives this answer: |
Jørgen Lang | Apr 05, 2018 | |
Page 440 thought bubble |
" I typedthe Spotify URL into my browser and I got a “no token” error." |
Jørgen Lang | Apr 05, 2018 | |
Page 442 annotation below 1st paragraph |
Original: "the terminal app" |
Jørgen Lang | Apr 05, 2018 | |
Page 442 Q&A section, 2nd answer, 2nd sentence |
"Another great way to find Python |
Jørgen Lang | Apr 18, 2018 | |
Printed, PDF | Page 443 bottom |
Missing page and chapter number on bottom of page |
Jørgen Lang | Apr 05, 2018 |
Page 447 Heading |
"Now let’s look at that request module again" |
Jørgen Lang | Apr 18, 2018 | |
Page 448 top right, 1st caption for Response object |
"The text property holds the real data of the response, typically in JSON format." |
Jørgen Lang | Apr 18, 2018 | |
Page 457 2nd last code annotation, page mid |
Text: "Let's move to the right coordinate." |
Jørgen Lang | Apr 07, 2018 | |
Page 462 2nd bullet point |
"A Web API typically provides a documented Application Programming Interface (API) that describes the data it can provide and services it has available." |
Jørgen Lang | Apr 07, 2018 | |
Printed, PDF | Page 462 5th paragraph from the right column |
The book reads |
Kwan Kim | Nov 16, 2021 |
Page 463 xword 17 down |
"17. Documented functions of a Web API." |
Jørgen Lang | Apr 07, 2018 | |
Page 473 Exercise description, link |
"It’s time to do some paper protype testing. Photocopy this page, and the next one (or print a copy from [Errata machine does not like links…protocol removed]wickedlysmart.com/hflearntocode), […]" |
Jørgen Lang | Apr 23, 2018 | |
Printed | Page 479 right bottom |
There is a diagram showing the neighbors of a cell. |
Kwan Kim | May 26, 2021 |
Page 483 Sharpen, 1st sentence |
"We’re not really exercising the next_gen code […]" |
Jørgen Lang | Apr 24, 2018 | |
Page 489 Bottom code block |
In the 'grid' layout manager code for the individual widgets, at least as of Python 3.9, the 'sticky' keyword argument requires its argument as a string, so: |
Glenn Lacki | May 09, 2021 | |
Page 504 directly below figure + bottom code annotation |
"left button" (i.e. mouse button) is using the same cognitive "namespace" as "start button", "clear button" (i.e. interface buttons). |
Jørgen Lang | Apr 26, 2018 | |
Page 510 1st sentence |
"Now we need to write the code to load a pattern into the grid mode." |
Jørgen Lang | May 02, 2018 | |
Page 536 bottom left code annotation |
"Note that only ServiceDogs will have this attribute because only ServiceDogs will execute this _init__ method." |
Jørgen Lang | May 04, 2018 | |
Printed | Page 538 First sentence of first paragraph |
"arbitary" should, perhaps, be "arbitrary" |
Craig Sadler | Jul 29, 2021 |
Page 548 1st code annotation |
"Create a frisbeeDog and a Frisbee." |
Jørgen Lang | May 08, 2018 | |
Printed | Page 550 bottom |
else: is missing at the bottom of the code |
Kwan Kim | Apr 26, 2021 |
Page 560 Body of def hire_walker(self, walker) |
Existing text: |
Keith Wine | Aug 07, 2021 | |
Page 561 3rd paragraph, 1st sentence |
"[…] you could improve the implementation with the iterable pattern that we mentioned much earlier in the book." |
Jørgen Lang | May 09, 2018 | |
Page 567 bullet list, second last bullet point in left row |
" The class we’re subclassing is often called the superclass or supertype." |
Jørgen Lang | May 10, 2018 | |
Page 567 bullet list, 2nd col, 4th bullet point |
"Override the str method to return the string you’d like displayed when your object is printed by print." |
Jørgen Lang | May 10, 2018 | |
Page 567 bullet list, 2nd col, 3rd bullet point |
"The isinstance method returns True […]" |
Jørgen Lang | May 10, 2018 | |
Page 567 bullet points |
Inconsistent formatting of keywords (e.g. OOP, class, etc.) and code/literals (e.g. __init__). |
Jørgen Lang | May 10, 2018 | |
Printed, PDF | Page 568 xword clues |
Clues 13, 15, and 16 down are missing in action… |
Jørgen Lang | May 10, 2018 |
Page 572 bottom code annotation |
"And here's the str method […]" |
Jørgen Lang | May 08, 2018 | |
Page 573 Body of def walk(self) |
Existing text: |
Keith Wine | Aug 07, 2021 | |
Page 576 Lyrics example |
The lyrics list erroneously has the word "saw" and also transposes the order of "you" and "on". The initial letter "s" and the reversed order of "y" and "o" show up in the last two shell output examples. The existing syntax: |
Keith Wine | Aug 07, 2021 | |
Page 579 running head (also on following odd pages) |
On pages 579, 581, 583, and 585 the wrong running heads are being used. Also the formatting seems to be incorrect. Words are overlapping. |
Jørgen Lang | May 15, 2018 | |
Page 580 annotation above Python Shell |
"Python represents the empty list (having no items) as set()." |
Jørgen Lang | May 15, 2018 | |
Page 586 bottom |
repeats book recommendations from ch12, p 566 |
Jørgen Lang | May 10, 2018 | |
Page 587 quotation marks entry in index |
Index entry uses typographical double quotes (U+201C and U+201D) instead of U+0022 |
Jørgen Lang | May 17, 2018 | |
Page 594 entry for macOS |
redundant entries for "macOS" and "MacOS". Official name is "macOS" |
Jørgen Lang | May 17, 2018 | |
Page 594 "module view controller" entry |
"module view controller pattern. See MVC (module view controller) pattern" |
Jørgen Lang | May 17, 2018 | |
Page 597 bottom right |
Index entries: |
Jørgen Lang | Apr 18, 2018 | |
Page 597 index entry for quotation marks |
Index entry uses typographical double quotes (U+201C and U+201D) instead of U+0022 |
Jørgen Lang | May 17, 2018 |