Source: https://www.tnstate.edu/faculty/fyao/COMP3050/Py-tutorial.pdf