Python by Example. Learning to Program in 150 Challenges