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:

?View Code PYTHON
#!/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:
?View Code PYTHON
#!/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:

É eu sei… aprender é divertido!