Update passwordGenerator.py #2719
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
✅ Enhancements Made to Original Password Generator
🔧 1. Function Encapsulation
• Before: All code was in the global scope.
• After: Wrapped logic inside a generate_password() function to allow reuse and cleaner execution.
🌍 2. Random Country & Language
• Before: Only printed a list of countries; TODO was not implemented.
• After:
• Picks one random country using pycountry.countries.
• Picks one random language from pycountry.languages that has a valid name.
🎲 3. Used random.choice()
• Before: Used randint(0, len(tuple) - 1), which is error-prone.
• After: Replaced with random.choice() for better readability and safety.
🧹 4. Cleaned Up Code Structure
• Removed redundant comments.
• Added clear, consistent variable naming.
• Grouped constants together at the top.
🔠 5. Casing Logic Simplified
• Before: Conditional casing inside if blocks.
• After: Used more readable logic with descriptive variable (case_choice as "upper_colour" or "upper_animal").
🔐 6. Unified Password Construction
• Created a single formatted password string:
"{colour}{number}{animal}{special}"
🧾 7. Enhanced Output
• Print statements now show:
• The final password
• The country used
• The language used
• Clear labels for each