Learn Python by writing games (free book)
inventwithpython.com
inventwithpython.com
If you're going to do this, there is one very important tip: use psyco. It ( http://psyco.sourceforge.net/ ) magically speeds up all Python execution by about 3-4x. In one of my games ( https://sourceforge.net/projects/slasha/ , still in its early stages) the millisecond per frame count went from 25-300 to 15-80 (drawing the desktop seems to take an unavoidable 7-10 ms).
As for what you learn doing this kind of thing, you use trigonometry a lot, you use the pythagorean theorem a lot, my game here is the way I thought up of the pathfinding algorithm.
Highly recommended, and at that price you really can't go wrong :)
See http://billmill.org/static/canvastutorial/index.html for example.
If there's still time, I would suggest not using the box image for variables. I prefer label tags because the box analogy assumes certain objects fit in certain boxes and is, thus, typed (unlike Python, where objects have types and names are just names). Also, an object can be contained in a single box while any number of labels can be attached to any object.
>>> a = [1,2]
>>> b = a
>>> a[0]='h'
>>> b
['h', 2]This is bad, because when novice programmers try to modify the program, they will quickly find it becomes unmaintainable.
It's not nearly as comprehensive as Invent with Python, but it also attempts to deal with the challenge of giving a low 'barrier to entry' to learning Python.