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

[Projeto] Praticando Python - Gerador de senha segura

Essa foi minha solução:

import random

def todos_os_caracteres():
    
    maiusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    minusculas = "abcdefghijklmnopqrstuvwxyz"
    numeros = "0123456789"
    especiais = "!@#$%&*"

    caracteres_da_senha = maiusculas + minusculas + numeros + especiais

    return caracteres_da_senha

def senha_gerada():
    senha = []
    while len(senha) < 12:
        escolher = random.choice(todos_os_caracteres())
        senha.append(escolher)
    return senha


print('A senha gerada foi:', end=' ')
for caracter in senha_gerada():
    print(caracter, end='')
3 respostas
solução!

Olá, Vitor! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso da biblioteca random para gerar caracteres aleatórios, utilizou muito bem a função para reunir todos os tipos de caracteres possíveis e ainda compreendeu a importância de estruturar a lógica para garantir senhas seguras com tamanho definido.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Uma dica interessante para o futuro é retornar a senha já como uma string, evitando a necessidade de percorrer a lista depois. Assim:

def senha_gerada():
    return ''.join(random.choice(todos_os_caracteres()) for _ in range(12))

print('A senha gerada foi:', senha_gerada())

Isso faz com que a senha seja gerada e exibida de forma mais direta e elegante.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

O underline do "for _ in range(12)" serviria como um "espaço em branco" pra entrada de uma variável?

def senha_gerada():
    return ''.join(random.choice(todos_os_caracteres()) for _ in range(12))

print('A senha gerada foi:', senha_gerada())

Gostei muito da facilidade desse código. Muito obrigado!

Olá, Vitor!

O _ em for _ in range(12) não é um espaço em branco, nem um campo para entrada de variável. Ele é apenas o nome da variável do laço.

Usa-se o _ como convenção para deixar claro que essa variável existe, mas eu não me importo com o valor dela, pois não vou usá-la dentro do loop.

Ou seja, isso aqui:

for _ in range(12):
    ...

Seria o mesmo que isso:

for i in range(12):
    ...

Mas já que o índice do loop não é relevante dentro do bloco de código, usar o _ é uma prática entre os programadores Python ao invés de i.