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()