I like the puzzles from Python for Kids. They get pretty hard! You'll want a quick intro to tkinter.
Beginner Puzzles (mostly string manipulation):
Python mini-golf takes you through function writing and using outputs or previous functions as arguments for new ones.
Creating vanity phone numbers based on names.
Slightly harder puzzles:
Answer riddles in caves based on poetry or die trying.
I particularly like the Twitter Puddle. See if you can write a solution using classes.