Think Python by Allen B. Downey