This is a great project to get hands-on experience with Python, understanding object-oriented principles, and create a practical tool that generates various types of passwords.
Create a Python application that generates three types of passwords:
- Random Passwords
- Memorable Passwords
- Pin Codes
Your application should have the following features:
- A
RandomPasswordGeneratorthat generates a completely random password of a specified length, optionally including numbers and symbols. - A
MemorablePasswordGeneratorthat creates a password made up of a set number of randomly chosen words from the NLTK English language corpus. It should also optionally separate the words with a chosen separator and make the words capitalized. - A
PinCodeGeneratorthat creates a numeric password of a specified length. - Each generator class should inherit from a base
PasswordGeneratorclass and override the base class'sgenerate()function to provide their unique password generation functionality.
- Understand the problem requirements and create a plan for your solution.
- Create the
PasswordGeneratorbase class with itsgeneratemethod. - Implement the three password generators, making sure they all inherit from the base
PasswordGeneratorclass. - The
PasswordGeneratorbase class should not work on its own, but each subclass should function independently. - Test your project thoroughly, ensuring that all requirements are met.
- Reflect on your solution, thinking about what you did well and what you could improve in the future.
- Plan your solution before you start coding to get a good overview of what classes and methods you need.
- Make good use of Python's
randomandstringmodules. - Consider how your classes can best follow the principles of object-oriented programming.
- Python 3.6 or later
- NLTK (Natural Language Toolkit) - You will need this library for generating 'memorable' passwords.
- The Python source code files
- A
README.mdfile that explains how to run your program and what it does - An optional report or presentation that explains your solution
Bonus: Create a user interface for your password generator!
Your project will be assessed on the following:
- Functionality: Does the program work as intended?
- Code quality: Is the code easy to understand and maintain?
- Methodology: Have good software development methods been followed?
- Documentation: Is the project and its code appropriately documented?
- Deeper understanding of Python and object-oriented programming.
- Experience with library usage in Python.
- Understanding how to work with text and numbers to generate passwords.
- Grasp of random sampling.
We wish you all the best in your journey into Python programming with this practical project! Happy Coding!

