I started learning Python with "Python for the Absolute Beginner" and liked the project- and game-based style of that book. I bought Impractical Python Projects because it followed that style, more-or-less. It was a good decision. There's a whole lot of stuff left out of the beginner book. I learned this quickly when I started trying to write my own programs and visited help sites like Stackoverflow. Impractical Python has filled in a lot of those gaps. This is where I learned about linting, profiling, and logging my code. I've also gotten a taste of more advanced modules like matplotlab (for charting) and numpy (numerical python). I appreciate that the use cases are in working programs where the modules have practical applications, vs. just short examples of the syntax.
There are 24 main projects and lots of practice projects with solutions. The author walks you through the design strategy and pseudocode for each main project, which I really appreciated. A big difference between this book and online tutorials is that there are no "code dumps" and there's a lot of discussion of the problem domain. You can skip this if you want, and go straight to the code, but I think it's good for beginners plus I learned a lot of arcane knowledge on a range of subjects like astronomy, finance, space travel, cryptography, etc. And the detailed code description is especially helpful with function parameters. These are described in the text, so you don't have to go off and google the function docs to figure out what all the arguments and "magic numbers" refer to.
My favorite project was "Finding Voldemort" in Chapter 3, where you use cryptography to tease out "I am Lord Voldemort" from "Tom Marvolo Riddle". I'm a big Potter fan, but I would've liked this anyway. That you can so easily find a word (Voldemort) that's not a real word, and that you (pretend) you don't know you're looking for, is amazing.
I also like the chapter on genetic algorithms. Using them to breed giant rats and crack safes really brought home how they work. The syllable-counting project was also really interesting, I almost skipped this one but I'm glad I didn't. This opened my eyes to natural language processing. The final chapter on Benford's Law was cool; I had never heard of this before, and I like the way the author related it to the 2016 election.
Another fave was building a model of the Milky Way galaxy. Generating the simulations was addictive.
I've now bought another No Starch book, "Automate the Boring Stuff with Python," and have found it really useful, as well.