Intro Python: Fundamentals by Reuven M. Lerner