A free, thorough introduction to Python, aimed at ambitious beginners.
I wrote this book teaching Python to undergraduate students. I found existing books and websites to be either too heavy on prose, or their exercises lacking the repetition required to build lasting skills and the cohesion required to develop understanding.
This workbook offers a strong foundation, but cannot cover everything there is to know. (A second volume is almost ready, and will be published as soon as I can find the time.) The workbook is accompanied by a book of 'desserts', more applied Python projects that match the skills you develop through the exercises in the main workbook. Have a look!