Programming is fun. It enables us to automate processes and create awesome applications. But just reading books and watching tutorials is not enough. We only learn by doing. We encounter errors, look them up on StackOverflow and learn from it. The problem is that we oftentimes don’t know what to code. We don’t know how to practice our skills.
In this blog post, we will take a look at over 50 Python programming ideas. They are split up into several different categories. I optimized the selection for the Python language. Nevertheless, feel free to use this list for other languages as well, if you like. The goal here is not to show you the implementation, but just to help you with the ideas for your learning projects.
Advanced Calculator: Program an advanced calculator in Python. You can make a console application or a GUI. Implement not only basic arithmetic operations but also more complex functions like trigonometry, square root, memory and so on.
Unit Converter: Implement a unit converter of your choice. Maybe Celsius to Fahrenheit, Meters to Feet or Euros to Dollars.
String Reverser: Implement a script which reverses a string, while still retaining the upper- or lower-case of the individual characters.
Prime Finder: Code a script which finds the nth prime number for you. You just enter a number and it gives you the respective prime number. Example: Input an 11 and get a 31.
Factorial Calculator: Use recursion to calculate the factorial of any number as efficient as possible.
Number Guessing Game: Develop a number guessing game. The computer comes up with a random number and you can make guesses. It then tells you if the secret number is greater or smaller. At the end it tells you how many attempts you needed.
Application Launch Pad: Develop a simple launch pad for your applications. A GUI where every button starts one of your favorite applications with certain options.
File Renamer: Implement a script which renames multiple files using regular expressions. Define the patterns yourself.
RegEx Query: Develop a program that applies a given regular expression onto a given text. Preferably, use a GUI for the implementation.
Spam Bot: Program a simple spammer. A bot that sends the same message over and over again. Don’t use it to annoy people!
Audio Video Converter: Code a script that converts a video into an audio file. For example, convert an MP4 into an MP3 by just extracting the audio. Probably, you will need some external libraries.
Caesar Encryption: Encrypt and Decrypt texts or whole files by using the Caesar encryption and shifting the letters by a certain number.
Advanced Encryption: Look up more advanced encryption algorithms and try to implement them in Python yourself. You can also use the cryptography library to implement a professional file encryption tool.
Hashing Algorithms: Use algorithms like SHA-256 or MD5 to hash files and texts. If you want, try to come up with your own hashing algorithms.
Best Sorting Algorithm: Write a tool that helps you to find the best sorting algorithm out there. Implement various algorithms like merge sort, bubble sort, comb sort and so on. Then let them sort a random data set and track the time. At the end, find the most efficient one.
Own Sorting Algorithm: Come up with your own sorting algorithm for numbers and implement it in Python.
Search Algorithms: Write a tool that helps you to find the best search algorithm out there. Implement various algorithms like linear search, binary search, jump search and so on. Then let them search something in a random data set and track the time. At the end, find the most efficient one.
Morse Code Encoder / Decoder: Implement a script that encodes your messages into Morse code and decodes them back into normal text.
Web Scraper: Implement a web scraper that extracts specific data out of a website. For example, you could use Wikipedia tables and build data sets out of them.
FTP Client: Code a FTP client that can upload, download and manage files on a server.
Mail Client: Write your own mail client and automate some processes like sending templates or filtering messages.
HTTP Server: Implement your own HTTP server, so that you can host a website on it.
Bandwidth Monitor: Write a tool that monitors the bandwidth of your network. You can also try to visualize it in a nice way.
Port Scanner: Write a tool that scans open ports on a host or in a network. Try to make it as fast as possible and to scan multiple ports at the same time. If you need help, take a look at the tutorial Threaded Port Scanner in Python.
TCP Chat: Implement a TCP chat that allows two different clients to communicate with each other. You can use a client-server-architecture.
YouTube Downloader: Write your own YouTube downloader where you just have to enter a URL to save a video. Maybe, you want to take a look at the pytube library.
Database Query: Program a tool that connects to a database and can execute SQL-Queries. Then show the results of the query.
P2P File Sharing: Develop a P2P file sharing application that allows two clients to exchange files over it.
File Downloader: Implement a simple downloader script. Give it the URL to an online file and download it.
Linear Regression: Use the linear model of regression to analyze any data you like and make predictions. If you use two- or three-dimensional data, plot the results.
Classification: Use a classification algorithm (like K-Nearest-Neighbors) to train the model to classify any data you like, by your criteria. If you use two- or three-dimensional data, plot the results.
Clustering: Choose any data you like and use clustering to spot groups and common attributes amongst the data sets.
Genetic Algorithm: Implement a genetic algorithm and train your model to perform a certain task you like. For example, you could try to make a high score at a certain game. Snake is a good choice.
Handwritten Digits Classifier: Build a neural network or a support vector machine and train it to recognize handwritten digits. You can use the MNIST data set. Then try to get your own handwritten images into the trained model and predict what digits they represent.
Object Recognition CV: Use any libraries you want, in order to build a computer vision system that recognizes and labels specific objects in images.
Chat Bot with NLP: Build a chat bot that is able to understand and reproduce a human language. Use natural language processing algorithms.
Predict Weather: Get some weather data and try to predict the weather of the next few days.
Neural Network Builder: Develop a tool with a graphical user interface that helps you to design and build a neural network by click and drag. Then the user should be able to load training- and testing-data into the model. The model should also be able to be serialized and saved.
Visualize Stock Data: Write a tool that accurately visualizes stock data. The best way to do that is to use candlestick charts. If you need help, check out the post Plot Candlestick Charts in Python.
Predict Stock Prices: Use machine learning algorithms, like linear regression, to predict stock prices. You decide how sophisticated you want to do that.
Net Worth Tracker: Develop a program that helps you to track your current net worth. This includes cash, bank accounts, stocks, real estate and so on. Maybe, you could use some APIs or web scraping to get the data automatically.
Portfolio Evaluation: Write a tool that helps you to evaluate your stock portfolio. Take into account the diversification, the currencies, the trends and key statistics. Also, visualize the distribution of the portfolio.
Tax Calculator: Program a tool that helps you to calculate how much you have to pay in taxes. This of course varies depending on your country.
Expense Tracker: Write a simple tool that helps you to keep track of your expenses and visualize the development.
Simple Blog CMS: Use Django or Flask in order to develop a simple blog with a CMS (content management system). You should be able to write, edit and delete posts, as well as to create, manage and delete users.
Mini Social Network: Use Django or Flask in order to develop a miniature version of a social network. You should have a solid login system, profiles, posts, comments and so on. Feel free to be creative.
Mini Shop: Use Django or Flask in order to program a mini shop. The user should be able to buy and rate stuff. He should have a shopping cart and an account.
Chess Engine: This one is a bit tricky, if you build it from scratch. Develop a chess engine artificial intelligence. If you just want to build the game, without the AI, use an existing engine like Stockfish.
Tic-Tac-Toe Engine: Build an artificial intelligence that plays Tic-Tac-Toe against you.
Snake Game: Code a simple snake game. PyGame is a great library for this.
Self-Driving Car Game: Develop a simple car racing game, where you need to beat the high score. Then build a neural network and use genetic algorithms to train it. It should beat you every time.
Hangman: Develop a simple hangman game. Use a GUI, PyGame or build it as a console application.