Python in the world of programming everyone is familiar with the popularity of this language. Learning python and building the project is always an amazing experience for developers. This language really deserves hype in today’s era and why not if it can solve a lot of real-world problems. Well, every programmer’s journey starts with learning the basics of any programming language and once they move ahead they realize the importance of building the projects using the same language. They become curious to know how things work in some applications and they try to get some practical exposure to expand their knowledge by building some cool projects. If you’re a developer then learning the syntax of a language is not enough….it’s important to know that how the concepts of a language can be applied to solve some real-world problems or challenges. Well, python is not an exception.
Python is a very powerful language and the best thing is it’s easy to learn. You can build a lot of cool stuff using this language. So don’t just get stuck on theoretical concepts. Once you know the basics of this language, go ahead, explore, find out some good projects to work on, and get some practical exposure. In programming always remember that getting hands-on experience is the best way to strengthen your knowledge. Today in this blog we are going to discuss some projects you can work on as an intermediate Python developer. These projects are not too hard and not too easy. There will be some challenges while building these projects and you will really enjoy solving those problems. We have divided the projects into three categories…
- Web Applications: Basically developers are responsible for building both the front-end and back-end part of the application. As a python developer, your main focus would be back-end part where all the business logic gets implemented. You can use some Python web frameworks such as Django and Flask.
- Desktop GUI: You can make your own Desktop Graphical User Interface application using Python. PySimpleGUI is one of the user friendly framework for Desktop applications. PyQt5 is another advanced powerful GUI framework but it has steep learning curve.
- Command-Line: Command line applications work in a console window. You can use docopt, argparse, and click frameworks to build your applications.
Now let’s discuss some projects for all the above three categories one by one…
1. URL Shortener Tool
Project Details: Are you familiar with some tools like bit.ly and TinyURL ? These tools shorten the URL and makes them easy to remember. Long URLs are filled with difficult characters and it’s not easy to remember them. These services reduces the characters or letters in URLs and returns a new shorten URL to the user. For example: https://practice.geeksforgeeks.org/explore/?category%5B%5D=Arrays&page=1 can be converted into https://tinyurl.com/y92ysnmb. So here the goal is to build similar kind of application.
Technical Details: The main goal of this app is to shorten the URL and when the user visits the shorten URL, he/she must be redirected to the original URL. To generate the characters for shortened URL you can use the combination of the random and string modules. You need to save the original and shortened URLs in the database so whenever a user visits the shortened URL (days, months, or even years after) the application checks the database, if the URL exists, it redirects to the original, or else it redirects to a 404 page.
Additional Challenge: You can make this tool more user friendly by adding the feature of custom URL option for user. It will be easier for a user to remember the custom URL generated by themselves.
Real Life Examples:
2. Pin Your Note
Project Details: We get so many ideas throughout the day and it’s a common nature of human that we forget the things very easily (even the important ideas or thoughts) due to our busy schedule or for some other reason. To remember things easily isn’t it a good idea to make an app that create a note of our ideas online? Using Python you can build a Pin Your Note application where a user can list out all the things he/she wants to remember and that list will be accessible from anywhere (since it is on a digital platform).
Technical Details: The main aim of this project is to allow users to save their ideas. Each user will have their own private notes and to create private notes you need to create an account creation feature with authentication. You can use Django framework which comes with its authentication system but if you’re using bottle or flask you will have to implement the user authentication on your own.
You can also add the feature that allows users to make a category of the notes. This way users will be able to segment their notes under different categories. For example, a user can create one section for programming languages, one for data structure and algorithms and the other one for databases.
If we talk about using the database for this application to store the information then you can use MySQLdb module if you select MySQL database or the psycopg2 module for a PostgreSQL database. You can also use other modules but that depends on the database you select for the application.
Additional Challenge: A lot of times we forget that we have created our important notes somewhere and that time we expect that somebody can remind us about the notes. So you can add a reminder feature in this app. This feature will allow the users to set a time for the reminder and he/she will receive a notification by email about the notes.
Real Life Examples:
3. Quiz Application
Project Details: Quizzes are always helpful in testing the knowledge, identifying the mistakes and correcting those mistakes. Taking an online test is the best way to understand the concepts completely. Using Python you can create a Quiz application that will list out a series of questions for users and the users will be allowed to answer those questions. Think of the Quiz Application as a kind of questionnaire.
Technical Details: The main goal is to set quizzes (series of questions) and people have to answer those questions. The app will display the final score and the right answer to the questions. Here you need to think about the admin users because only the admin will be allowed to create the quiz or set the questions for other users (who will attend the quiz).
You need to implement the account creation feature to keep the individual records of scores. Admin user should be able to create tests with the questions and answers by simply uploading a text file. You can choose any format for the text file but the application should convert this file to a quiz. In your database, you need to store the questions, possible answers, correct answers, and the scores for each user. You can use MySQLdb module if you select MySQL database or the psycopg2 module for a PostgreSQL database. You can also use other modules but that depends on the database you select for the application.
Additional Challenge: Add a feature that allow users to add timers to the quizzes. This way the creators of a quiz (admin users) can determine how many seconds or minutes a user should spend on each question in the quiz. You can also add the quiz-sharing feature where a user can share interesting quizzes on other platforms.
Real Life Examples:
1. MP3 Player
Project Details: It is not possible to play the contents of an audio file without a player. Audio files are digital files and you can showcase your skill by building a tool MP3 player using Python. You need to build an MP3 player software that emulate the physical MP3 player. Using this software, users will be allowed to play an MP3 files on the desktop, laptop or computer.
Technical Details: The goal is to build an MP3 software that allows it’s users to play MP3 and other digital audio files. You need to focus on building a beautiful user interface for the better engagement of the users. The interface will be listing the available MP3 files. A user can also have the option to list other digital audio files that are not MP3. Also, a user should be able to see the information on the file that is playing. You can include some information such as as….
- The name of the file
- Its length
- The amount played (minutes and seconds)
- The amount not played (minutes and seconds)
To handle the MP3 files and other digital audio files you can use pygame, pymedia and simpleaudio library in Python. These libraries allow you to work with multimedia files in a few lines of code. You can also add a feature that allows users to create a playlist. To store the information of created playlist you can use sqlite3 module of SQLite database.
Additional Challenge: Add a feature that allows users to repeat currently playing files or even shuffle the list of files to be played. You can also include one feature that allows the users to increase and decrease the playing speed of the audio file.
Real Life Examples:
2. Alarm Clock
Project Details: We use the alarm in our day to day life that gives an audio or visual reminder about a certain condition. Using Python you need to build an alarm software that allows users to set time for a certain condition and when the condition is met it should give an audio signal. This tool will work from the user’s laptop or desktop device.
Technical Details: In this project you need to mainly focus on the timing and the audio signal of the alarm because the main objective is to activate audio signals at certain times of the day. Add the feature that allows users to create, edit, and delete alarms. Also, the interface should display all the active and inactive alarms. For audio signals or reminder, you need to set the tone in your software. You can use pygame library playing audio. You also need to save information on alarms in your database such as…alarm date, time, and tone location.
Additional Challenge: Add a feature that allows users to set recurring alarms. Using this feature user will be able to set alarms that will ring at a certain time on certain days of the week, every week. For example, an alarm can be set at 11:00 AM every Saturday. You can also add the snooze feature in this application.
Real Life Examples:
1. Site Connectivity Checker
Project Details: When we visit a URL or a website, most of the time we get the information whatever we need on our browser. Sometimes websites can be down and it can give some error message in the browser. This might happen due to some server issue. Here you can showcase your skill and build a site connectivity checker. A site connectivity checker gives the status of a website, visiting the URL. It visits the URL at regular intervals and returns the results of each visit. Instead of visiting the URLs manually to check the site status, you can use this tool to monitor multiple websites from one page.
Technical Details: The main goal is to check the status of a website. To implement this feature you can use TCP or ICMP for your connection. Socket programming in python will help you to make the connection. Use socket module in Python and to learn more about socket programming visit the link Python Socket or Python network programming . User should be able to add and remove sites from the list of sites to be checked. You can use docopt, click, or argparse frameworks to add commands for these features. Keep in mind that user should be capable to start the tool, stop it and determine the intervals. You also need to save the list of the files checked and to do this you can use sqlite3 module of SQLite database.
Additional Challenge: User needs to keep checking the command line to check the status of the site. To avoid this you can add notification feature (Ex: a sound played in the background) to alert the user when a site’s status changes. Maintain the previous status of a site in your database because that’s the only way the tool can tell when the status changes.
Real Life Examples:
2. File Renaming Tool
Project Details: A lot of time we need to rename the files in our directory according to certain conventions. For example, File001.jpg, File002.jpg, File003.jpg, and this goes on. Doing this task manually can be repetitive and boring. To avoid this manual work, you can create a tool to rename a large number of files.
Technical Details: The main goal is to create a tool to rename files without mistakes in a couple of seconds. To rename the target files, you can use os, sys, and shutil libraries available in Python. Users should be able to pass the naming convention of their own choice to rename all the files in the directory. Here the regex module will help match the required naming patterns if you know how regex works. If a user pass naming convention such as myfiles as part of the commands then the tool should rename the files like myfiles123, where 123 is a number.
Additional Challenge: Implement a feature that allow users to choose only certain number of files for renaming, instead of all the files. For this feature the tool will sort the files based on alphabetical order, time of file creation, or file size, depending on the user’s requirements.
Real Life Examples: