I'm working through the book Impractical Python Projects by Lee Vaughan
My general approach is to read the objectives and work on the problem myself without reading further
If I get stuck, I look at the strategy and the pseudocode
After I've got a working solution, I look at the book's code to see how they did it
If I type in the book's code myself in order to learn it better, I'll mention that in the docstrings so it's clear what work is mine and what isn't
All the book's code is publicly available at https://github.com/rlvaugh/Impractical_Python_Projects
Organized by chapter of the book. The first five chapters weren't sprawling too much and had some shared code, so I dumped all of those in together. Probably would have been better if I'd started with chapter-by-chapter organization. Lesson learned. Also not everything from the first few chapters is in there; most of that code was written before I decided to make everything portfolio-ready, but there's some code from those chapters that I brushed up to use as modules.