A while ago I came across the Python Challenge [1]. It is a series of programming challenges that require writing short programs in order to advance through levels. The creator(s) of the site put a lot of effort into it. The challenges are a lot of fun to solve, and the whole thing is very addicting.
If you don't know Python [2] then I suggest you read its tutorial [3] and then start solving the challenges, it will be a great learning experience. If you do know Python, the challenge still has a lot to offer on the educational and fun fronts. It will make you explore a variety of libraries and programming domains.
Most of the levels can be solved with other programming languages as well. However, solving them in Python makes the programmer experience the beauty of Python, its power, and ease of use.
To sum it up, if you enjoy programming, the Python Challenge [1] is for you. I don't remember having so much fun on a website in a long time :)
Ah, and by the way, I'm currently in level 27.
Links:
[1] http://www.pythonchallenge.com/
[2] http://www.python.org/
[3] http://docs.python.org/tut/