import random
import string
def generate_password(length=12, use_uppercase=True, use_lowercase=True, use_digits=True, use_symbols=True):
"""Generate a secure random password based on user preferences."""
characters = ''
if use_uppercase:
characters += string.ascii_uppercase
if use_lowercase:
characters += string.ascii_lowercase
if use_digits:
characters += string.digits
if use_symbols:
characters += string.punctuation
if not characters:
raise ValueError("At least one character type must be selected!")
password = ''.join(random.choice(characters) for _ in range(length))
return password
if __name__ == "__main__":
print("--- Password Generator ---")
length = int(input("Enter desired password length (default is 12): ") or 12)
use_uppercase = input("Include uppercase letters? (y/n, default is y): ").strip().lower() != 'n'
use_lowercase = input("Include lowercase letters? (y/n, default is y): ").strip().lower() != 'n'
use_digits = input("Include digits? (y/n, default is y): ").strip().lower() != 'n'
use_symbols = input("Include symbols? (y/n, default is y): ").strip().lower() != 'n'
try:
generated_password = generate_password(length, use_uppercase, use_lowercase, use_digits, use_symbols)
print(f"Generated Password: {generated_password}")
except ValueError as e:
print(e)