(updated May 6, 2018)
(updated May 6, 2018)
These Python projects are selected with the following in mind:
- You can use the skills you've learned from these projects as a foundation for other projects.
- You will learn the basics of a specific IT subject. If you are going to college, you can use these as your basis.
- These projects can help show potential clients/employers that they should hire you.
- It helps you understand other people's code
- Doing these projects will make Python second nature for you.
Mid-level Python projects
Battleship game. Battleship is a game where two players hide their ships in a grid (Tutorial). Then both players try to destroy their opponent's ships by announcing which coordinates they are attacking.
This is a simple game, but the process of simulating the game will test your skills as a beginner programmer. Try to make the game in the console (or cmd/bash command line).
Web API. The Internet is full of microservices and APIs. You need to know how to at least read their documentation and connect to them. For this, I'll recommend you learn: Request.
Here is a curated list of public APIs that you can try for practice (and possibly future use).
Web Scrapping. Not everything on the Internet is available as an APIs. Sometimes, you have to manually pull the data from a website. In addition to Request, you will need to learn BeautifulSoup.
For your first web scrapping project, try to connect to a wikipedia page and extract information such as a list of given names.
Email via gmail. Try to send an email using gmail's Python API. If you don't have a gmail account, try to use an smtp library to send an email. Don't spam.
Spreadsheet Manipulation. Check out xlsxwriter. I've encountered a lot of job requests where the clients want a report written out to a spreadsheet file like Excel .
Try to make a simple CRUD application that saves to a spreadsheet.
Web development. Django is a framework with a lot of batteries included. The developers says that this is "the web framework for perfectionists with deadlines". Django makes it easy to create CRUD websites, add common web features like forums and comments, is secured by default, and uses a model for separation of the database, backend and frontend.
Try to make a simple blogging website similar to what I've done with this my personal website. Figure out how to create an rss feed. How does pagination work? These are just the challenges you have to solve in your journey.
Simple Graphics User Interface (GUI) application. GUI seems to be popular in the academe. I blame Visual Basic 6.0 for introducing the idea of drag-and-drop GUI programming .
For Python, I suggest using Kivy, a cross-platform framework that allows you to make a GUI program for desktop, iOS, and android devices.
I would suggest making a simple picture book using Kivy. Let the user click/touch to show different pictures.
Low level network development. Web development is high-level programming. You should also be comfortable with low-level development. Try to make a simple chat server and client using the built-in Python library, Sockets. After doing this, you will learn the basics of how TCP/IP works and how computers communicate through the network.
 I am primarily a Python developer. So I'm more intimate with what skills people look for in a Python programmer. If you are looking for projects for a different programming language, feel free to either make your own list or find an equivalent library.
 While xlsx is a format for Microsoft Excel, all spreadsheet applications like Google Sheet and OpenOffice can open xlsx file formats. So this shouldn't be an issue. But you should still test the created xlsx file to be sure.
 I don't think VB 6.0 is a bad programming language. I grew up with it and built my first commercial project here. However, I also have books and tech magazines to guide me with best practices and tricks. Based on my interviews with teachers, VB 6.0 is used because its real easy to make a GUI program.... but it became a poor substitution for programming as a lot of things are abstracted. ....also, VB.NET is already out and a lot of school still use VB 6.0 because its what they are taught. I hate to say it, but VB 6.0 makes it easy for people with no programming fundamentals to code. This is a subject of a future post.