Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Está conforme a atividade?

usuarios = []
senha = []

for i in range(2):
    criar_usuario = input("Deseja criar um usuário? (S/N) ").lower()
    if criar_usuario == "s":
        usr = input("Digite o nome de usuário: ")
        while True:
            if len(usr) < 5:
                print("Usuário deve ter pelo menos 5 caracteres.")
                usr = input("Digite o nome de usuário: ")
            else:
                usuarios.append(usr)
                senha.append([])  # cria sublista de senhas para este usuário
                print("Usuário cadastrado com sucesso: {}".format(usr))
                break
    else:
        print("Nenhum usuário foi cadastrado.")
        continue

    criar_pwd = input("Deseja criar uma senha para o usuário? (S/N) ").lower()
    if criar_pwd == "s":
        while True:
            pwd = input("Digite a senha para o usuário {}: ".format(usr))
            if len(pwd) < 8:
                print("Senha deve ter pelo menos 8 caracteres.")
            else:
                senha[-1].append(pwd)  # adiciona na sublista do usuário
                print("Senha cadastrada com sucesso para {}!".format(usr))
                break
    else:
        print("Nenhuma senha foi cadastrada.")

print("\nUsuários cadastrados:")
for i in range(len(usuarios)):
    print("Usuário: {}, Senhas: {}".format(usuarios[i], senha[i]))
2 respostas
solução!

Oii Samuel,

Você foi muito além do que a atividade pedia e acabou criando um mini sistema de cadastro completo, inclusive com armazenamento em listas. Isso é excelente, pois mostra que você está tentando aplicar o conhecimento de forma integrada.

Seu código funciona e atende às regras de validação (mínimo de caracteres), mas tenho algumas observações sobre a Experiência do usuário (UX) e a estrutura lógica para você refletir:

1. A conexão entre usuário e senha
No seu código, você pergunta separadamente se a pessoa quer criar um usuário e depois se ela quer criar uma senha.
Imagine a situação: eu respondo "S" para criar o usuário "Samuel", mas respondo "N" para a senha. O sistema vai cadastrar um usuário sem senha? Normalmente, em um cadastro, esses dois dados são obrigatórios e solicitados em conjunto.
Pra resolver isso, você poderia colocar a solicitação da senha imediatamente após a validação do usuário, sem perguntar "Deseja criar uma senha?".

2. Iteração de listas em paralelo
No final do código, você usou range(len(usuarios)) pra imprimir o usuário e a senha correspondente. Isso funciona, mas o Python tem uma função chamada zip() que serve exatamente para "zipear" (juntar) duas listas e percorrê-las ao mesmo tempo.

Veja como seu for final ficaria:

print("\nUsuários cadastrados:")
# O zip pega o item 1 da lista 'usuarios' e o item 1 da lista 'senha' e entrega juntos
for u, s in zip(usuarios, senha):
    print(f"Usuário: {u}, Senhas: {s}")

Note também que usei a f-string (f"Texto {variavel}") em vez do .format().

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

Entendi, e por isso quero estruturar os dados utilizando listas e sublistas, de forma que cada lista principal esteja diretamente associada à sua respectiva sublista. Assim, ao acessar uma lista principal, todas as informações relacionadas da sublista correspondente também estejam disponíveis. Neste momento, não quero utilizar comandos específicos, pois meu objetivo é compreender a lógica por trás dessa estrutura para, posteriormente, aplicá-la em Python ou em qualquer outra linguagem.

Observação: costumo utilizar o método .format() como padrão nos meus projetos, pois ele me ajuda a manter consistência no código e também se aproxima da forma como a formatação é feita em Java, com o .formatted().