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)