I had the opportunity to teach a student "Introduction to Computer Science, Using Python", one-on-one so I selected this book and she bought us each a copy.
The book's OK I guess. Though, in chapter 1 the author introduced "Chaos Theory" which is OK I guess, but I would have rather seen more and simpler coding examples, such as "here's a simple sequence of instructions", and especially "here's a simple for-loop" before putting it all together and talking about chaos theory.
Also, from the first chapter and throughout the book, the author repeatedly misused the eval() function. There was a so called example something like the following:
x = eval(input("Enter a floating-point number: "))
This is just bad practice. It's laziness on the author's part. It's bad to let the user type in anything and then call the eval() function since eval() evaluates whatever the user types in as Python code.
This is the kind of bad security practice that allows hackers to steal or destroy data.
This security problem was fixed in Python3 and the author is reducing things back to the Python2 level of insecurity.
What would be better is code such as the following:
x = float(input("Enter a floating-point number: "))
Then, if the user typed in something bad, an exception would be thrown.
Eventually, I would take it a step further and make a function to ask the user for a float:
x = askFloat("Enter a floating-point number: ")
Then, as the course progressed, I would add to the function askFloat() so that it would handle bad input, such as alphabetic input too, and loop and let the user try again.
Where I learned computer programming from, they taught us to develop programs that could correctly handle anything that the user could enter.