Coding in Python and Elements of Discrete Mathematics Errata p. 13, top picture: s += 1 should be: s += k p.18, 3rd paragraph: have specific functions in Python programs. should be: have specific meaning in Python programs. p. 58, middle: 1+4+9+36+49+64+81+100=385 should be: 1+4+9+25+36+49+64+81+100=385 p. 59, middle: optional argument reversed=True should be: optional argument reverse=True p. 75, Question 10: if n % d is 0: should be: if n % d == 0: p. 81, Question 2: return x is y # or return x == y should be: return x == y p. 121, Question 4: int(17.0 / n * n) is not 17.0 should be: int(17.0 / n * n) != 17.0 p. 141, table of relational operators: is equal; same as == is not not equal; same as != should be: is is the same object is not is not the same object Use == and != when comparing values; use "is" or "is not" when you want to verify that variables refer to the same object. Starting with release 3.8, Python may generate a warning or a syntax error when "is" is used with literals. For example: >>> x = 'A' >>> x is 'A' True >>> if x is 'A': print('A-OK') SyntaxError: "is" with a literal. Did you mean "=="? It is OK to use "is" or "is not" with None, because there is only one instance of None. p. 143, code in the right column near the bottom: : is missing in "else" p. 218, Question 7: 3*0 + 7 + 3*2 + 0 + 3*4 + 3 + 1 + 3*0 + 0 + 3*0 + 1 + 3*8 + 7 = 60 should be: 3*0 + 7 + 3*2 + 0 + 3*4 + 3 + 3*0 + 0 + 3*0 + 1 + 3*8 + 7 = 60 Please email support@skylit.com if you find mistakes or typos. Thanks!