I have learned a lot through solving problems on Project Euler. Here is a short list. I write them down in my own words to make sure that I truly understand them.
It's fun and challenging.
-
Start from small numbers and look for a pattern
This is probably the most important one to solve problems on Project Euler. They're maths problems. Maths has its beauty and has patterns.
This coincides the idea of writing clean code.
Thanks to its just-in-time (JIT) compilation by translating python code to machine code, pypy can significantly improve performance. It works especially well for recursion and loop from my experience, which can potentially reduce execution time from one hour to a few minutes. That makes an unbearable solution not too bad in the end. See more here.