So I have to learn python for an upcoming project at work. I know plenty of languages so I'm not too worried, but the project hasn't started yet so I can't learn python as I work on the project. Instead of just going through tutorials and programming random trivial stuff, is there someplace that maybe have open (but simple) problems to solve? I'd go through projecteuler problems, but solving problems for the sake of solving them seems like a waste of time if someone can get some use out of my learning. Maybe a central place for open source projects that need small pieces of code written?


I would still suggest you look through the whole Python doc site. Take the tutorial, read the library references etc. Even though your project has not started, but once it starts, you will have ample knowledge of Python to start designing and coding.

+2  A: 

Help wanted on Sourceforge has some projects looking for python developers.

I chose this only because it most directly answers my question. Everyone else had great answers though
+1  A: 

I don't think you'll find that many projects that need small pieces of code written, because that is easy to do and so it is usually done by the project members early on. Actually contributing to a project usually requires more reading than writing, and the same is true for learning a new language. In a project that is new and has few members you could find opportunity to help, but new projects don't always have good code to learn from, so I wouldn't recommend them.

Personally, I would try to find a project that has elements that you believe will be useful when you'll start your own. Things to consider:

  • Desktop app or for web
  • Specific libraries
  • Database connections
  • Graphics handling
  • Specific algorithms

All these points can help you find an opensource project that could be helpful for you to get started on the language and learn useful things that you can leverage for your own work.

If you know more about your future project, we could help you find relevant opensource python code.

That's the thing, I don't really know much about the project coming up yet. Just that it will be in python and C++ running on embedded linux. That's a good point about easy stuff written first. I figure maybe even there's a place for non-programmers who need simple stuff for them somewhere
+3  A: 

Oh, I think I misinterpreted your question earlier.

How about looking through bitbucket or github, and forking anything that catches your interest?

When I am starting a new language, I often tackle the same sort of problems I'm familiar with in the languages I know. You might port the utility functions or libraries you use on other projects. For instance, I make websites that display info from the APIs of other sites, so when starting with Python, I ported over code that makes HTTP calls and builds query strings. Next I familiarized myself with how people produce output for the browser in Python (Django, in my case). Now that I've done a few projects in Python, I'm approaching Scala in the same way.

Alex JL
That's a really good idea, porting utility functions. +1 for that
Thanks, yeah, that's always what I start with. They're small, concrete, and self contained.
Alex JL
@Alex JL - Good call. Related to utility functions, I also try to write (or port) tools for the new project in the new language -- this is useful to the project too.
+2  A: 

Since you're already skilled in other programming languages, it might be fun to contribute to Rosetta Code.

Rosetta Code is an open Wiki where individuals contribute solutions to same set of tasks in as many different languages as possible. It allows people to compare languages very effectively.

Here's the list of Tasks not yet implemented in Python. Your efforts here could significantly advance other people's learnings.

+1  A: 

Take a program you've already written, and rewrite it in Python.

joe snyder
+1  A: 

This is the first site I always go to. Its a ton of fun and gets you thinking quickly.

From the site:

What is Project Euler?

Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

William T Wild
+1 for project euler, but I already mentioned that in my question =P