Um outro dia me deu vontade de trabalhar com o random do Python e para fazer algo útil resolvi criar um código que gerasse passwords aleatórios e de tamanho fixo.
Acontece que naquele momento eu não dispunha de internet ou bons materiais sobre Python(exceto o help) para suportar o processo de criação do código, de tal modo que aproveitei a situação para medir a quantas andava o meu conhecimento sobre Python.
Então, usando apenas o conhecimento disponível na minha cabeça eu comecei a escrever o código e após alguns minutos de tentativa e erros cheguei ao seguinte resultado:
#!/usr/bin/python import random def rand_op(): return random.randint(0,1) def rand_number(): return random.randint(0,9) def rand_letter(): alpha = [ 'a','b','c','d','e','f','g','h','i','j','k','l','n','o','p','q','r','s','t','u','v','x','z','w','y' ] return random.choice(alpha) def generate (size): final = '' for x in range(size): y = rand_op() #print y if y == 0: value = rand_number() if y == 1: value = rand_letter() op = random.randint(0,1) if op == 0: pass if op == 1: value = value.upper() final = final + str(value) print final for k in range(20): generate(10) |
Bem feio né? Pois eis que hoje de tarde me deparei com esse código perdido em alguma pasta dentro do meu $home e decidi recriar o código, agora consultando a internet e outros materiais relativos a Python que tenho disponível em casa, o resultado que se seguiu foi:
#!/usr/bin/python import string import random def genPass(lenght): AlphaNumeric = string.ascii_letters + string.digits PassWord = ''.join([random.choice(AlphaNumeric) for _ in range(lenght)]) return PassWord for _ in range(10): print genPass(12) |
Bem mais agradável não? Custou aproximadamente o mesmo tempo para ser desenvolvido e ainda me agregou 2 novos conhecimentos:
- o conceito de list comprehensions
- novos métodos do módulo string
É eu sei… aprender é divertido!

