I'm no Python expert or software developer by trade, my experience with programming is mostly from college and short hacks for work. When I started to explore Python, the most recommended book was "Python the hard way" which taught you a great depth of Python but I really didn't understand the writing style of the book. Felt like it was very much directed towards doing repeat exercises without fundamentals, think of this like being told how to use a hammer, but I never tell you why to use a hammer or another tool. Towards the end of the book, I lost interest and moved to other Python books searching for something that expanded the core of Python but also was easy enough to grasp.
After buying books and reading reviews, I stumbled across Python Crash Course simply because No Starch was having a sale and I picked up the book as one of its early releases. At first, it comes off like every other Python book for new coders, very entry level, you print foo so many times, I'm sure you know how this goes. But as I read further, the examples given were clearly driven through each chapter. An example of this is the chapter on dictionaries, something which I never used before in Python beyond copy/type coding. The chapter gives you a good intro, plenty of examples, and finally, the end of the chapter questions are logic but also tough (in fact some I had to resort to friends at work for help).
One of the benefits of this book is that it teaches you why to use a Python feature or module, instead of just telling you to use it. This is like someone showing you how to use a box full of tools instead of telling you how to build a bird house. Once you build the bird house, you may get stuck on your next project since the core concepts of Python are not well understood. This is where I see many people get stuck after finishing a book, they don't know how to do the next challenge.
Something I like to also address is that many "beginner" books for Python are divided into two sections, either they are focused for a seasoned software developer who is entering the Python world, or they are written for someone who never used a computer before. This might sound harsh, but I've read so many beginner Python books that start at the very basic and never move beyond creating loops or very very basic examples. Then, on the other hand, some intro to Python books jump you right into classes and object oriented programming. Python Crash Course is why I would call the best mix of leveling you up from having some programming experience to someone who could understand why testing and oop programming styles are used in the real world.
This book helped me understood how to use unit testing in Python which I really struggled with for many years and helped me teach my team how to use this as well. That alone was worth the price of the book.
The only area I cannot comment much on is the projects part of the book which I haven't completed yet. Briefly reading the chapters they focus on helpful projects which I believe could have work place benefits (something nice as you learn and also help build tools or reports for work). The only issue I had with this book is the range of chapter quizes varied greatly in their difficulty, in some cases making me restort to checking the Internet. Other than that, I still think that this is the best book for the money, and the best book for anyone who wants to get started into Python programming with a small amount of previous programming experience.