There is a newer edition (ISBN 978-1725894662) of this book that actually covers Python 3.6.
This is a book about hacking, but not just any kind of hacking. It is about mathematical hacking, or scientific computing. If you like math and want to use computers to do math or solve mathematical problems, then this book is the for you.
This is version 3, which includes over 80 additional pages, with extensive additions on Python classes, iPython with jupyter notebooks, magic functions, random numbers, and probability and statistics. The emphasis throughout the text is on programming in the iPython notebook. Version 3.0.3 (2017) is revised and corrected.
Part I gives an introduction to programming, the Python shell, and using iPython notebooks.
Part II gives a thorough tour of the Python language. Topics include data types, simple statements, assignments, conditionals, loops, list comprehension, sorting, Numpy, pyplot, using dictionaries, functions, classes, functional programs, lambda functions, and recursion.
Part III gives applications, including probability and statistics, and topics from machine learning such as clustering, linear regression, logistic regression and principal component analysis. Other topics include image analysis, the singular value decomposition, solving initial value problems, discrete systems, fractals, estimating pi, geographic maps, and satellite orbit analysis.
Over 300 problems are included that can be used for student programming projects.
No programming background required. Some basic understanding of math through calculus expected for the applications.