An (“Evolving”) [List] of Python Resources

This list of Python resources for beginning coders is in (mostly) alphabetical order. I haven’t tried to provide different headers for videos versus MOOCs versus books, etc. I figure you can always search the page if you’re looking for something in particular. Where I can, though, I’ve given you the sometimes dubious benefit of my first-hand knowledge. In other cases, I’ve gone by what the website says or let you know what I’ve heard from others.

If you know of other sources that you think could be on this list, please shoot me a comment. Also, clue me in if any of the links don’t work properly.

16 Resources to Learn Python Programming: A shortish list of some of the best resources for learning Python. Many of these resources also appear in my list below, but there are few here that I’ve not yet checked out.

80+ Best Free Python Tutorials, eBooks & PDF To Learn Programming Online : A nice collection of resources. I especially like its list of cheat sheets, which is something few other resource guides provide.

After Hours Programming Python 3 Tutorial: An online tutorial with which I’ve not had much experience. It does have a code simulator, but it doesn’t seem to require you to code something correctly to move on with the tutorial. That can be a good thing when you’re sick of being tested, and it can be a bad thing when you need to be really challenged.

The Best Way to Learn Python: A handy, dandy list of some great Python resources.

Bootcamps: Bootcamps are places (physical or virtual) you go to learn specific programming skills in a matter of a few weeks. I’ve never attended one, but there are a number of websites devoted to helping you distinguish one from another. They include SwitchUp, Techendo, and others. Bootcamps can be quite pricey, so it pays to be cautious and selective.

Byte of Python: An introductory text for beginners. For the most part, I think it’s clearly written. The author, Swaroop C.H., wrote it for Python 2, then updated it to Python 3, and then revised it back to Python 2 for reasons he explains in his book. But I’m glad I still have his PDF version on Python 3 on my mobile.

Check iO: I have a crush on this gamified tutorial (or, maybe it’s more of a game that teaches). Here’s the hitch: you need to solve the problems before you can see how other people of have solved them. This drives me mad, though usually in a good way. I don’t have the chops to get to the end anytime soon, but it’s a terrific vehicle for taking my own lame solutions and then comparing them against some other tightly written solutions by programmers who are much better than I. This is usually humiliating, but also in a good way. And it’s a great way to learn how to write code that is more Pythonic.

CodeBuddies.org: This is a group of people who meet on Google Hangouts at scheduled times to talk about code (usually as it relates to specific books or projects) while sharing their screens. It’s intended to help participants stay motivated and learn faster. I’ve only been to a few hangouts, but it seems worthwhile.

Codecademy: It has a very good, interactive online Python tutorial as well as a community to help support it. I recommend it.

Codementor: For a fee, this service “connects you with experienced mentors for instant help via screen sharing, video, and text chat.” I’ve not yet used it, but I’ve been tempted a few times when banging my head on an especially recalcitrant problem.

Computer Game Development Tutorial: This is a series of videos on how to develop games in Python.

Computer Science Circles: A nice little interactive online tutorial sort of along the lines of the interactive version of How to Think Like a Computer Scientist, which I reference below.

Dive into Python 3: Classic book on Python that can be found online.

Drag and Drop Programming: A growing number of sites allow beginning programmers to build code by dragging and dropping “blocks” (or other visual widgets)  rather than manually writing text-based code.  These do not necessarily use the Python language, but they are a place where beginners — including children — can go to get a feel for how to code. Among them are MIT ScratchCode.org, and Google Blockly. There’s a blurred boundary between these types of sites and sites that teach via gamification.

The Django Book: If you hang around the Python community for any length of time, Django will come up. It’s a Web framework — meaning, that you can use it to write Web apps — written in Python. Last time I looked, this particular book came with a warning about being out of date, though the site indicated it was in the process of being updated. I’ve read that the official Django tutorial is good and that Tango With Django is another useful resource.

Exercism.io: Here’s how Wired described it: “Exercism is updated every day with programming exercises in a variety of different languages. First, you download these exercises using a special software client, and once you’ve completed one, you upload it back to the site, where other coders from around the world will give you feedback.” Exercism may be a sophisticated, crowd-sourced learning experience, but, at least for now, it requires you to use GitHub and command lines. In other words, it’s somewhat complicated to get off the ground with it. Still, if you’re beyond the early beginner stages, it may be a natural next step. Newcoder.io/ seems to be a similar site.

Instant Hacking: A super, duper abbreviated tutorial designed to teach Python on the fly.

Intro to Computer Science: I started and took a large segment of this Udacity MOOC when it was still relatively new. I enjoyed it. As far as I can tell, the courseware is still free, but there is paid version that includes extras such as project feedback, personal guidance, personalized pacing support, and a verified certificate.

Game-Based Learning: I’ve already mentioned Checkio, which is geared more toward adults, but there are other games as well that are even more “game-like” and sometimes geared toward younger audiences, including CodeCombat, Codingame, and Code.org. PythonChallenge is closer to Checkio but, instead of starting with pretty clear instructions about what goal you need to achieve, you have to interpret clues as you go along. I should note that some games (such as CodeCombat) are free to start but charge you something, such as a monthly subscription fee, once you’ve ascended to certain levels.

Google (and not just the search engine): It’s no secret that the famous search engine is often the coder’s best friend. You put a question into the magic rectangle and it serves up lots of possible answers, usually good ones. And then there’s Google’s Python Class, which has both text and video. It’s fun largely because it is delivered to Google employees in what I assume is a Googleplex classroom.

Hands-on Python Tutorial: This is actually a full university course taught by Dr. Andrew N. Harrington. I like it very much, having stumbled onto it via iTunes.

The Hitchhiker’s Guide to Python!: Bills itself as an “opinionated guide [that] exists to provide both novice and expert Python developers a best-practice handbook to the installation, configuration, and usage of Python on a daily basis.” Most of what I’ve read is not for rank beginners, but there seems to be a lot of canny advice. It also contains a good list of other Python resources.

How to Build a Python Bot That Can Play Web Games: This is based mostly on text and screenshots, and it entails building a Computer Vision-based game bot in Python.

How to Think Like a Computer Scientist: Various versions of this book exist, but my favorite is the interactive version to which I’ve linked here.  In my experience, it is a fine blend of beginner book and online tutorial. I hope more computer “books” will follow this approach in the future.

Introduction of Python’s Flask Framework: Like DjangoFlask is a Web framework for Python but it is often billed as smaller and easier to learn. Therefore, it may be an appropriate starting place for beginning programmers who want to use a Web framework.

Invent with Python: I’m a big fan of the book Invent Your Own Computer Games, which is geared toward kids but which is terrific for beginner programmers. There’s a free online version. It takes you through the process of code for specific games. He note only provides all the code but shows you how and why it works. There’s nothing else quite like it, in my experience. The author, Al Sweigart, has also authored Making Games with Python & Pygame and Hacking Secret Ciphers with Python, also available for free.

Invent with Python Bookshelf: This is a very nicely laid out list of books, many of which can be gotten for free. Al Sweigart, the owner of the site, not only includes his own books but many others as well.

Learnpython: This is an interactive Python tutorial that has a set of tutorials that teach the basics as well as more advanced lessons. I’ve used it and liked it. It’s straightforward, fast and without many bells or whistles.

Learn Python The Hard Way: Based on my experience in online communities, a lot of people use and swear by this. I’ve gone through parts of it. Some people say they’ve done it in a weekend, but I know I couldn’t complete it that quickly. There’s a free book online and also a relatively inexpensive (last time I checked) course that includes videos, among other things.

Introduction to Computer Science and Programming Using Python: An introduction to computer science as a tool to solve real-world analytical problems using Python 3.5.

Nettuts+’s Python from Scratch: This is a combination of text and video that demonstrates the “ins and outs of Python development,” starting from the most basic levels possible.

Non-Programmer’s Tutorial for Python 3: Also not interactive but, as with the 2.6 version, a nice set of Wikibooks-based lessons on learning the basics.

One Day of IDLE Toying:  A succinct introduction to IDLE, which stands for Integrated DeveLopment Environment. It’s the “integrated development environment” (that is, the doodad into which you write and run your programs) that’s bundled with Python, so you have it when you download the program.

Online Python Tutor: Free educational tool that allows a teacher or student to “write a Python program in the Web browser and visualize what the computer is doing step-by-step as it executes the program.”

Programiz: I stumbled on this site while looking for information on keywords in Python. Not only does it have an excellent explanation of keywords, complete with sample code, but the other parts of the online tutorial also look very clean and helpful. I’m looking forward to getting to know this site better.

Primers on Python: There are surprisingly few good, short, introductory Python primers online. As I’ve been learning, I’ve created the oddball Quick and Quick for Python, and I recommend First Steps With Python as a less quirky alternative. One (perhaps overly) succinct work is Patrice Koehl’s Python Primer. There’s also Crash into Python, although I think that’s geared toward people who know how to code but are new to Python.  A Beginner’s Python Tutorial seems like a pretty nice tutorial for complete beginners, and I think After Hours Programming can also be a useful primer.

Programming for Everybody (Python): A University of Michigan MOOC from Coursera. You’ll need to register and login to see it. I’ve not taken this course. Last time I looked, there were a number of other Coursera offerings was well, such as  An Introduction to Interactive Programming in Python and Algorithmic Thinking from Rice University.

Pygame: A  set of modules designed for writing games in Python.

Python 3 Programming Tutorial: This is a series of videos on Python programming on YouTube. Generally speaking, YouTube is an amazing source of knowledge about programming and software usage in general. I’m pretty sure I could spend weeks there just watching hundreds of Python-related videos.

Python Books: From the official Python website, this is a list of books for both beginners and advanced practitioners. From what I can tell, it’s regularly updated (which is not always the case for other book lists). Here’s a much shorter list from a different source.

Python Course: By U.S. standards, this isn’t a course but, rather, an online tutorial that is almost all text and graphics. It has tutorials for both Python 2 and Python 3, and these tend to have pretty good explanations: or, at least, better than a lot of the official Python documentation, in my view.

Python for Beginners: From the official Python website, it has recommendations for installing, learning and otherwise investigating Python.

Python for Non-Programmers: From the official Python website, it has links to video tutorials, online courses, websites, books, and resources for younger students.

Python for You and Me: This simple but effective online book is written for programmers new to Python.

Python Turtle: I haven’t downloaded this but have used a version in a tutorial. It was fun. In essence, you write code to move your animated turtle in various ways. It “strives to provide the lowest-threshold way to learn (or teach) software development in the Python programming language.”

Python Docs: These are from the official Python.org website. My experience is that these contain a ton of great information but are, at times, difficult to parse. I sometimes need to go to other tutorials that are easier to understand, but I often start here.

Python Weekly is a “A free weekly newsletter featuring the best hand curated news, articles, new releases, tools and libraries, events etc. related to Python.” I receive it and enjoy it, but I find that it’s geared to more seasoned Python coders rather than to beginners.

Pythonic Perambulations is not a blog for beginners but it’s well-written and fun to read (even when I can’t quite grasp the details). Think of it as aspirational. When you start to really grok this blog, you’re past the beginner phase.

StackOverflow: If you do a Google search to find out how you do something in Python, you’ll likely be directed to this website, which is where both beginners and experts go to ask questions and have those questions answered by various Python programmers. It’s invaluable. Because this has been going on a while, your question has usually already been asked and answered here, so do a search before asking anything.

Steven Thurlow’s Python Tutorial: I stumbled onto this tutorial while looking for a decent explanations of modules  and classes. I believe his are the clearest I’ve seen anywhere.

Stupid Python Ideas: I’m only beginning to be able to parse a blog like this one, which goes into detail on more sophisticated Python coding concepts and practices. This blog strikes me as one of the clearer ones. It has helped me, for example, understand how the function called grouper works. I just couldn’t understand the official documentation on it.

Ten Python Blogs Worth Following: I’m not really up on which Python blogs to follow, but here are some recommendations by the author of Bite Sized Python Tips.

Tutorials Point: When I’m searching Google to find out how to do something in Python, I often wind up here, especially if I can’t understand the official Python documentation (a not uncommon occurrence for me). The explanations here tend to be written in clear English and the examples are usually helpful. You can also move through the tutorial in a systematic way if you like.

Twitter accounts: There are four that seem particularly worth following to me:  @ThePSF @planetpython @gvanrossum. I’m always interested in following other accounts if you have any recommendations.

Featured image: Català: Poema visual transitable en tres temps (Joan Brossa). Segon temps: camí -amb pauses i entonacions-. Jardins de Marià Cañardo, Velòdrom d'Horta (Barcelona). Author: Dvdgmz

The Winding Path Toward Python Proficiency

Note: I originally wrote this post over half a decade ago but have just gone through and rechecked/updated the links. The graphic shows some sources (thinking about you, Google+) that no longer exist, but I figured the concept itself was still valid enough to leave it. This post is not about networks per se but it points a small portion of the deeply networked coding sites on which we've all come to rely since the advent of the Internet -- Mark in December 2021

For the beginner coder, there are lots of different paths to programming proficiency. Some people will start with college courses, boot camps, or books. But it’s easy to lose your way, running out of time or patience as you struggle through the dense undergrowth of learning possibilities. This might provide a bit of guidance for those willing to generalize the lessons to find their path toward Python proficiency.

To one degree or another, of course, all learners are going to blaze the path that best meets their unique needs, and a linear representation like this one can never do justice to fact that many people will engage in a lot of these activities simultaneously (e.g., have a book going while taking a MOOC and playing a Python-learning game). So feel free to devise other paths. We all learn from one another in this area. Below I have elaborated on resources available to travelers along the pathway suggested above.

Python Primers

At one time, I created a primer I was calling Quick and Quirky Python 3, but I’ve since removed it since I needed to refine it. But there is an assortment of other sources. One nice one is How to Use Python: Your First Steps. Another (perhaps overly) succinct work is Patrice Koehl’s Python Primer. There’s also Crash into Python, although I think that’s geared toward people who know how to code but are new to Python. I also like A Beginner’s Python Tutorial, and After Hours Programming is useful. In addition, there are various Python tutorials (which we’ll discuss below) that could be viewed as primers.

Resources for Kids (or the Young at Heart)

A growing number of sites allow beginning programmers to build code by dragging and dropping “blocks” (or other visual widgets)  rather than manually writing text-based code.  These do not necessarily use the Python language, but they are a place where beginners of all ages (but especially children) can go to get a feel for how to code. Among them are MIT ScratchCode.org, and Google Blockly. There’s a blurred boundary between these types of sites and sites that teach via gamification, which I will discuss below.

Online and/or Interactive Tutorials

There are a lot of very nice Python tutorials online, so there’s no way to cover them all here (see the end of this post for more on sources). I really like TutorialsPoint as a non-interactive but clearly written and organized tutorial. It’s also pretty comprehensive. Another good one is the Non-Programmer’s Tutorial for Python 3. As for interactive tutorials, the ones I’ve used most are CodecademyHow to Think Like a Computer Scientist, and LearnPython. There are also a lot of nice video-based tutorials. I urge you to search YouTube and find those most applicable to your needs. The video-based tutorial I’ve used most is Nettuts+’s Python from Scratch, partly because there is prose as well as video.

Python Books

Where to begin? For my money, the best place to get a user-friendly list of them is Invent with Python Bookshelf. Another good list can be found at the official Python website. As for individual books, some of the best ones online are Byte of PythonDive into Python 3How to Think Like a Computer Scientist (also an interactive tutorial), Invent with Python (actually a series of books), and Learn Python The Hard Way (also a tutorial) are all good. For beginners, I also recommend Head First Python.

Online References

Virtually anything on the Internet can serve as an online reference, so this is a catch-all and poorly defined bucket. But what I’m really referring to are the references you go to when you have a specific question about Python. Very often, you start just by plugging your specific question/subject matter into Google (or your search engine of choice) and seeing what comes up. Quite often, you’ll wind up in StackOverflow, where both beginners and experts have gone (and still go) to ask questions and have those questions answered by various Python programmers. It’s invaluable. Because this has been going on a while, your question has usually already been asked and answered before. When Web searching, you may also wind up in an online tutorial of some sort, whether it’s in the official Python documentation or something like TutorialsPoint.

University Courseware

With the advent of iTunesU and MOOCs (for massive open online courses), there’s now a plethora of university-level online courses that teach Python. In fact, since Python has become the introductory language of choice at universities, the average Python beginner has access  to an embarrassment of riches in this area. A beginner could, of course, start with one of these courses as his or her first stop on the way to learning to code. My experience, however, is that it helps to go into those courses with at least a little knowledge about Python. That way, you can focus on the broader concepts (such code efficiency and the various types of algorithm) rather than scrambling just to keep track of Python vocabulary and syntax.  I have had most experience with Hands-on Python (particular good for beginners), Udacity’s Programming Foundations with Python, and MITx: 6.00x Introduction to Computer Science and Programming. I like them all, but there are plenty of other choices available these days, including a number from Coursera.

Game-Based Learning

Game-based learning is not just for kids, though some game-based Python learning experiences are geared that way: e.g., CodeCombatCodingame, and Code.org. Other games or gamified challenges are more geared toward adults. Among them are Checkio (with which I’ve had most experience and can recommend), PythonChallenge and the pretty-darn-serious Exercism.io.  The great thing about Checkio and Exercism.io is that A) you must do a lot of practical coding to make headway, and B) there are opportunities to interact with other coders and (at least for Checkio) get a good look at how good programmers solved the same problems as you just did.

Online Community Q&A

You can join Python communities, such as those on Google+, and ask your questions there. You’ll often get quite a few knowledgeable responses in just a few hours’ time. The same can apply to StackOverflow, which is not only a great reference but a great online community. There are also communities attached to online tutorials, such as those at Codecademy. And there are services such as Codementor where, for a fee, you can connect with “experienced mentors for instant help via screen sharing, video, and text chat.” There are also Internet Relay Chats devoted to Python.

Meetings and Hang Outs

Then there are virtual communities where people “hang out” while studying, discussing or reading a book together. One option for this is Codebuddies.  There are real, face-to-face communities as well. Many cities now have makerspaces/hackerspaces where people congregate to make stuff, teach one another to code, and otherwise fly their geek flags. There are also meetups and user groups in which people come together just to discuss programming in Python. And there are a number of Python-focused conferences in a given year.

Intermediate Books and Blogs

Once you’re past the rank beginner phase, there are many books and blogs geared to intermediate levels of Python knowledge. Among the not-strictly-for-beginners books I have on my bookshelf are the (very heavy) Learning Python by Mark Lutz and the (less heavy) Python Cookbook by David Beazley and Brian Jones. The former is a soup-to-nuts manual and the latter is great for teaching you how to write in a more Pythonic, elegant way (something I’ve not yet mastered). Online is the book Problem Solving with Algorithms and Data Structures Using Python, which provides the kinds insights into algorithm writing that are seldom in books for beginners. And the official Python website has advanced books “for when you don’t want gentle.”  There are also higher level blogs such as Pythonic Perambulations once you get past the beginner phase.

Write Real Code

Writing useful code is the best learning experience of all. There are lots of ways to do this. If your employer is already paying you do write in Python, then problem solved. But even if you’re not a paid programmer/developer, there are plenty of other opportunities to write “real code.” For example, you can write your own app or game, or code up a raspberry pi project, or get involved with a Github project. The truth is, there are nearly an unlimited number of ways and reasons to write your own code, from competing in a coding challenge to helping a non-profit produce the code it needs to run its business. The world is your coding oyster.

Note: Featured image is from Andrew Cattoir (Lake Mead National Recreation Area). See https://commons.wikimedia.org/wiki/File:Scenery_at_Bluffs_Trail_-Las_Vegas_Bay_Campground(802dd631-e46a-46e5-92dc-b1a6915a61ce).jpg