2
respostas

[Dúvida] Está conforme a atividade?

conjunto_1 = set()
conjunto_2 = set()

print("Caso 1:".capitalize())
print("Permissões principais: leitura, escrita, execução, compartilhamento".capitalize())
conjunto_1.update(["leitura", "escrita", "execução", "compartilhamento"])

print("=="*100)

print("Caso 2:".capitalize())
print("Permissões principais: leitura, escrita, execução, compartilhamento".capitalize())
conjunto_2.update(["leitura", "escrita", "execução", "compartilhamento"])

# Entrada do usuário
caso1 = input("Digite as permissões do usuário 1 separadas por vírgula: ").lower().replace(" ", "").split(",")
caso2 = input("Digite as permissões do usuário 2 separadas por vírgula: ").lower().replace(" ", "").split(",")


# Transformar lista em set
permissoes1 = set(caso1)
permissoes2 = set(caso2)

# Verificação usando issubset() mantendo sua lógica
if permissoes1.issubset(conjunto_1):
    print("Usuário 1: todas as permissões solicitadas fazem parte das permissões principais.")
else:
    print("Usuário 1: alguma permissão digitada não faz parte das permissões principais.")

if permissoes2.issubset(conjunto_2):
    print("Usuário 2: todas as permissões solicitadas fazem parte das permissões principais.")
else:
    print("Usuário 2: alguma permissão digitada não faz parte das permissões principais.")
2 respostas

Fiz de outra forma e esta forma esta correta tambem ?

permissoes_principais = {"leitura", "escrita", "execução", "compartilhamento"}

for usuario in range(1, 3):
    print("\nCaso {}:".format(usuario))
    print("Permissões principais: leitura, escrita, execução, compartilhamento")

    entrada = input(
        "Digite as permissões do usuário {} separadas por vírgula: ".format(usuario)
    )

    permissoes_usuario = {
        p.strip().lower() for p in entrada.split(",")
    }

    if permissoes_usuario <= permissoes_principais:
        print(
            "Usuário {}: todas as permissões solicitadas fazem parte das permissões principais."
            .format(usuario)
        )
    else:
        print(
            "Usuário {}: alguma permissão digitada não faz parte das permissões principais."
            .format(usuario)
        )

Oii, Samuel! Tudo bem?

Que evolução incrível da primeira para a segunda versão!

Respondendo diretamente à sua pergunta: Sim, a segunda forma está corretíssima.

Vou destacar três pontos que mostram por que sua segunda versão brilha:

  1. O "Açúcar Sintático" do <=

Você substituiu o método .issubset() pelo operador <=. Isso é genial!

  • No Python, os conjuntos (sets) suportam operadores matemáticos.
  • Escrever if subconjunto <= conjunto_principal: é o mesmo que perguntar "O primeiro é subconjunto ou igual ao segundo?". Fica muito mais limpo e legível.
  1. Set Comprehension (Compreensão de conjuntos)

Essa linha aqui foi a cereja do bolo:

permissoes_usuario = {p.strip().lower() for p in entrada.split(",")}

Em vez de criar uma lista vazia, fazer um for, limpar a string e depois converter para set (como você faria em linguagens como Java ou C), você resolveu tudo em uma linha de forma otimizada.
3. Tratamento de Espaços (strip vs replace)

Na primeira versão, você usou .replace(" ", ""). Isso remove todos os espaços, inclusive se houvesse uma permissão composta (ex: "leitura escrita").
Na segunda versão, você usou .strip(). Isso é mais seguro, pois remove apenas os espaços "sujeira" do começo e do fim, preservando a integridade da palavra.

Você aplicou o princípio DRY (Don't Repeat Yourself - Não se repita) ao usar o for para os usuários, em vez de copiar e colar o código para o "Caso 1" e "Caso 2".

Parabéns pela refatoração! Continue explorando essas funcionalidades dos Sets, elas poupam muito trabalho.

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