import secrets
import string

def generate_password(length=12, use_uppercase=True, use_lowercase=True, use_digits=True, use_symbols=True):
    """
    Generează o parolă aleatoare și securizată cu caracterele specificate.

    :param length: Lungimea parolei.
    :param use_uppercase: Utilizează litere mari dacă este True.
    :param use_lowercase: Utilizează litere mici dacă este True.
    :param use_digits: Utilizează cifre dacă este True.
    :param use_symbols: Utilizează simboluri dacă este True.
    :return: O parolă generată aleatoriu și securizată.
    """
    if length < 1:
        raise ValueError("Lungimea parolei trebuie să fie mai mare decât 0.")
    
    character_pool = ''
    if use_uppercase:
        character_pool += string.ascii_uppercase
    if use_lowercase:
        character_pool += string.ascii_lowercase
    if use_digits:
        character_pool += string.digits
    if use_symbols:
        character_pool += string.punctuation
    
    if not character_pool:
        raise ValueError("Trebuie să selectați cel puțin un tip de caracter pentru parolă.")
    
    password = ''.join(secrets.choice(character_pool) for _ in range(length))
    return password

def main():
    print("Bun venit la Generatorul de Parole Securizat!")
    
    try:
        length = int(input("Introduceți lungimea parolei (recomandat minim 12 caractere): "))
        use_uppercase = input("Include litere mari? (da/nu): ").strip().lower() == 'da'
        use_lowercase = input("Include litere mici? (da/nu): ").strip().lower() == 'da'
        use_digits = input("Include cifre? (da/nu): ").strip().lower() == 'da'
        use_symbols = input("Include simboluri? (da/nu): ").strip().lower() == 'da'
        
        password = generate_password(length, use_uppercase, use_lowercase, use_digits, use_symbols)
        print(f"Parola generată este: {password}")
    
    except ValueError as e:
        print(f"Eroare: {e}")

if __name__ == "__main__":
    main()