Marijn Haverbeke no starch press 2015
The book follows a logical progression of programming concepts. You will start with values and operators, move through programming structures and objects. You'll learn how to use regular expressions and how to handle errors before moving on to more complex topics and projects.
The book's chapters demonstrate how the book moves from basic to complex topics.
Most chapters include an exercises section and there are exercise hints at the back of the book to help if you need. There are also two projects that you can work through. The exercises are fairly challenging and the projects are interesting and will help to nail down the material.