Reading from "Think Python 2e": Ch. 5.1-5.7 and 7.* and 19.1