Over the past decade, the Python programming language has exploded in popularity amongst programmers in all areas of coding. From web developers to video game designers to in-house tool creators, many people have fallen in love with the language. Why? Because it’s easy to learn, easy to use, and very powerful.

If you’re looking to pick up Python, you’re in luck. There are lots of web resources to learn python, and many of them are entirely free. Here are some of the best ones. For optimal results, we recommend that you utilize ALL of these websites as they each have their own great aspects.

#1 – How To Think Like A Computer Scientist

The most notable aspect of this web Python tutorial series is that not only does it teach you how to use the Python programming language, but it teaches you how to think like programmers think. If this is the first time you’ve ever touched code, then How to Think Like a Computer Scientist will be an invaluable resource for you.

Keep in mind, however, that learning how to think like a computer scientist will require a complete shift in your mental paradigm. Grasping this shift will be easy for some and difficult for others, but as long as you persevere, it will eventually click. And once you’ve learned how to think like a computer scientist, you’ll be able to learn languages other than Python with ease!

The Dive Into Python web tutorial series is awesome for those that want to learn python who have little or no experience with programming. The very first part of the tutorial walks you through the steps necessary to set up a Python interpreter on your computer, which can be very difficult for first timers.

There is one drawback to this website: it may try to dive in too quickly. As someone with Python experience under my belt, I can see how newbies might be intimidated by how quickly the author moves through the language. If you can keep up, then Dive Into Python will be a fantastic resource. If you can’t keep up, then visit some of the other websites in this list until you have a better grasp of the language, then come back and try this one again.

What better place to learn Python than on the official Python website? The creators of the language itself have devised a large and helpful guide that will walk you through the basics of the language.

The best part of this web tutorial is that it moves slowly, drilling specific concepts into your head in more than one way to make sure that you understand them. The website formatting is simple and pleasing to the eye, which just makes the whole experience that much easier.

If you have a background in programming, the official Python tutorial may be too slow and boring for you. If you’re a brand newbie, you’ll likely find it to be an invaluable resource in your journey.

Unlike the previously listed Python tutorial sites, TryPython is great in that the website itself has a built-in Python interpreter. This means you can play around with Python coding right on the website, eliminating the need for you to muck around and install interpreters on your system.

Of course, you’ll need to install an interpreter eventually if you plan on getting serious with the language, but TryPython lets you try python before investing too much time in a language that you might end up not using. TryPython’s tutorial series incorporates the interpreter, allowing you to play around with the code in real-time, making changes and experimenting as you learn. This is the most hands-on Python tutorial you will find outside of a real life classroom.

Like TryPython, Learn Python has a built-in interpreter right on the website as well as a tutorial series to go alongside of it. So what’s the difference between the two? Not a whole lot.

LearnPython is a little more basic, which means newbies will be able to keep up with the lessons and feel less intimidated by the material. And unlike TryPython, LearnPython includes programming exercises at the end of each lesson. These lessons serve to solidify the knowledge you gain and make sure that you truly understand what you’ve learned.

For those of you who that want to learn python to eventually create video games, this bonus resource will be extremely helpful to you. PyGame is a set of Python libraries that allows you to create graphical applications. Regular Python runs in a console window, which limits you to ASCII text. PyGame provides functionality for displaying images to the screen in a non-console window.

The best part? It’s just as easy to learn and easy to use as the Python language.

Conclusion

Though it has a relatively low learning curve, Python is a powerful language that can be utilized in multiple applications. Its popularity has been growing consistently over the past few years and there is no indication that the language will soon disappear. If you want to learn a highly versatile and powerful language, it’s never too late to give Python a shot.

Hi, this won't qualify as a best place necessarily but I have recently launched Pythonbeginners.com
It's still a work in progress but it's all free and my first course on Python essentials is done, along with the YouTube playlist. I am half way through my tkinter course and will be adding a pygame course soon. I hope readers here will visit.

A great little introduction to Python scripting in Python which demonstrates the power and simplicity of Python and traces basic concepts as well. And you get tool learn and see what you are creating immediately.

I've been through it all , reading books, doing a 3 day course (waste of time) and watched those free youtube videos. Luckily my mate recommended an online Python course where you can ask as many questions as you want (via email to a live experienced Python programmer) - that was the most important thing, you will have questions ! On top of all of that the course is award winning and only 29USD ! Unlike other online courses, it does not expire ! heres the link - http://ude.my/23gkv good luck !

I did a bit of digging around and the general consensus is that
LPtHW is a fantastic resource for beginner programmers.

The downside to LPtHW is that the author intended the book to be
used in a graduate studies course setting--he gives some "extra
credit" problems at the end of each chapter, but does not give the
answers. This could be frustrating for a new programmer.

Still, the quality of the actual teaching has received some great
reviews, so there's no reason not to use LPtHW as a tool for
learning Python. It would be a great supplementary resource for the
5 resources I listed on the actual MUO article.

On the topic of MIT open courseware:

A few years ago, I did use MIT's open courseware on the topic of
Linear Algebra and I found it to be absolutely AMAZING. The
professor was extremely intelligent and he explained difficult
concepts in a way that even babies could understand. Other than
that, I know very little about MIT's open courseware
program--especially in other subject areas.

I would say give it a shot. If the videos are free, there's no harm
in trying them. If the quality of MIT's Python open courseware is
the same as their open courseware on Linear Algebra, it might be the
best free resource out there.

On the topic of Python 2.x vs. 3.x:

At this point in time, newbie programmers should probably learn
Python 3.x. When Python 3.x first came out (over a year ago), there
was the problem of library compatibility: some libraries were only
compatible with 2.x and not compatible with 3.x, so newbies
continued to learn 2.x.

Over time, companies have been working to port their libraries over
to 3.x. Not ALL libraries have finished their conversion, but I'm
confident that by the time you finish learning Python, 3.x will be
the accepted standard.

Besides, the differences between 3.x and 2.x are not that great.
Once you learn 3.x, you can research the small differences between
the two--then you'll be able to program in both versions.

If you really want to create a video game, learn C++ and a graphics library such as OpenGL (cross platform) or Directx (Windows). You can alternatively create games with engines such as UDK (uses Unreal Script, which is a hybrid of C++) and Unity (Javascript, unmanaged C# and Boo) which take care of a lot of the back-end work, such as the simplification of networking/multiplayer, graphics rendering and physics/collisions.

The catch however, is that these tools don't allow you to get close to the hardware and really control what your game does, you must rely on the engine. Also, after making x dollars, you usually have to pay a royalty fee for using their engine.

For graphics-intensive games, using a lower-level language (like C++) will technically result in better performance. However, these days, with all the improvements in CPU and GPU speeds, Python can hold its ground pretty well, even when it comes to 3D graphics.

Plus, if it really came down to the wire, Python can be integrated with a language like C++, which is what EVE Online has done I think: using a dedicated engine for the graphics, but Python for everything else (networking, scripting, other backend things, etc).

If nothing else, PyGame is a great way to take one's first step into game development. For most indie, single-man projects, Python will provide more than enough power and flexibility!