Project Euler is a great way to learn any language. It is a series of math/logic problems that are intended to be solved through programming. It is particularly suited to interpreted languages like Python, but people use everything from Java to machine code.
Also, a great Python resource is The Python Challenge. Learn Python and practice your deductive reasoning and problem solving skills all at once. This is a novel learning approach that is definitely worth checking out, even if you aren't that into Python.
I like the problem solving approach to learning programming languages since you really need to use the language 'in anger', as opposed to the more traditional 'tutorial' approach. Tutorials are still great, but it is too easy to just copy code without really thinking too much.