Source: http://perso.eleves.ens-rennes.fr/people/emeline.luirard/enseignements/TPagreg/tp2Python.pdf