Repeat a Python function multiple times
While I think there must be a more elegant way to accomplish what you are trying to do, the problem lies in the fact that Blender isn't updating the scenegraph when it's deep inside the Python loop.

You can force an update and redraw with:

# bpy.types.Scene.update()
bpy.context.scene.update()


and 

bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1)


Note: calling bpy.ops.wm.redraw_timer is very much a hack, since scripts are not supposed to be forcing redraws, however it does work.