1
resposta

[Projeto] Verificando permissões

def obter_permissoes(mensagem: str) -> set[str]:
    """
    Recebe uma string com permissões separadas por vírgula e retorna um conjunto de permissões (em letras minúsculas e sem espaços extras).

    Se a entrada for vazia, solicita novamente.
    """
    while True:
        permissoes = input(mensagem).strip()
        if permissoes:
            return {p.strip().lower() for p in permissoes.split(',') if p.strip()}
        print('As permissões não podem ser vazias. Tente novamente')


def inserir_permissoes():
    """
    Obtem as permissões principais e as permissões solicitadas.

    Retorna ambas as permissões.
    """
    principais = obter_permissoes("Digite as permissões principais (separadas por vírgula): ")
    solicitadas = obter_permissoes("Digite as permissões solicitadas (separadas por vírgula): ")

    return principais, solicitadas
    

def verificar_permissoes(principais: set[str], solicitadas: set[str]) -> None:
    """
    Verifica quais permissões dentre as "solicitadas" estão presentes nas "principais".

    """
    if not solicitadas.issubset(principais):
        print('As permissões solicitadas NÃO fazem parte das permissões principais.')
        faltando = solicitadas - principais
        print('Permissões em falta: ', ', '.join(sorted(faltando)))
    else:
        print('As permissões solicitadas fazem parte das permissões principais.')


def main():
    principais, solicitadas = inserir_permissoes()
    verificar_permissoes(principais, solicitadas)


if __name__ == '__main__':
    main()

1 resposta

Oi, Matheus! Como vai?

Seu código está muito bem organizado e faz ótimo uso de funções e conjuntos para tratar as permissões. A lógica de validação ficou muito clara e funcional.

Uma dica interessante para o futuro é utilizar o método set.intersection(), que permite verificar diretamente quais elementos estão presentes em dois conjuntos. Veja este exemplo:


conjunto1 = {"ler", "escrever", "editar"}
conjunto2 = {"editar", "apagar"}

comum = conjunto1.intersection(conjunto2)
print(comum)

O código mostra quais itens estão presentes nos dois conjuntos, ou seja, as permissões em comum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!