by Allen B. Downey
This book is a quick and easy introduction to programming and to Python. It is among the clearest introductions to both topics that I have seen in a long time. The author, a university professor, assembled the material in this book after needing a better introductory text for non-programmer students. He succeeded well in this concise (260 page) tome and follows very much in the K&R mold of short, lucid explanations with code snippets to back them up. The pedagogical dimension is especially visible in the many exercises scattered through the text.
What I particularly like is that each chapter has a section on debugging, which is inevitably the bane of new programmers. Conversely, I found that the absence of anything longer than a snippet to be a limitation. The snippets rarely exceed 10 lines and are mostly shown as REPL-based examples, rather than scripts or programs. It's one thing to understand concepts; it's another to be able to string them together in a larger piece of software. The latter challenge and the issues of building programs are simply not discussed.
Unlike other books that are introductory, the explanations of basic programming concepts do not substantially interfere with learning about Python, although advanced topics are not tackled. Hard-core readers who have no tolerance for this and want to dive right into Python will probably be better served by Learn Python the Hard Way, which is free online. But for all others, Think Python will be an enjoyable and instructive tutorial.