that's been the most difficult part for me, actually -- finding fun problems that I could work on that aren't completely impossible. I spent a lot of time reading books on Python when I should have just been playing with code.
I learned programming by hacking on other people’s code – manipulating it to fit my needs. Try to find an open source project you can mess with.
I can’t say for sure how much fun this’ll be for you: The next time you think to yourself, “I wish this thing worked like this” or “I wish this thing had this feature”, if it’s open source, just load up the code and start playing with it. Your problem might be easier to solve than you’d think.
Depends on your definition of fun, but I've used text books to give me practice exercises, instead of having to invent problems myself. (It's also a good way to learn a language's way of working, rather than learning how to implement your old thought patterns in a new language.)
Something like SICP has problems that are fairly interesting from a mathematical perspective as well as a coding one. I don't know if there's the equivalent for Python, but it might be worth checking.