El algoritmo consiste en multiplicar por 2 las cifras que ocupan por una posicion impar, si es mayor que nueve el resultado restarle dicho numero con los nuevos resultados que obtenemos los sumamos con los numeros de la sposiciones pares y si es multiplo de 10 el resultado es correcto.
Código:
import random
comprobacion=0
while comprobacion%10!=0:
#El número de cifras representa la posicion de la cifra en el numero de la cc
uno=random.randint(1,9)
dos=random.randint(1,9)
tres=random.randint(1,9)
cuatro=random.randint(1,9)
cinco=random.randint(1,9)
seis=random.randint(1,9)
siete=random.randint(1,9)
ocho=random.randint(1,9)
nueve=random.randint(1,9)
diez=random.randint(1,9)
once=random.randint(1,9)
doce=random.randint(1,9)
trece=random.randint(1,9)
catorce=random.randint(1,9)
quince=random.randint(1,9)
dieciseis=random.randint(1,9)
unp=uno*2
if unp>9:
unp-=9
dop=tres*2
if dop>9:
dop-=9
trp=cinco*2
if trp>9:
trp-=9
cap=siete*2
if cap>9:
cap-=9
cip=nueve*2
if cip>9:
cip-=9
sep=once*2
if sep>9:
sep-=9
seep=trece*2
if seep>9:
seep-=9
oip=quince*2
if oip>9:
oip-=9
comprobacion=unp+dop+trp+cap+cip+sep+seep+diez+doce+catorce+dieciseis
if comprobacion%10==0:
n=[unp,dop,trp,cap,cip,sep,seep,diez,doce,catorce,dieciseis]
we=''.join(n)
print we
print "Hecho"
comprobacion=0
while comprobacion%10!=0:
#El número de cifras representa la posicion de la cifra en el numero de la cc
uno=random.randint(1,9)
dos=random.randint(1,9)
tres=random.randint(1,9)
cuatro=random.randint(1,9)
cinco=random.randint(1,9)
seis=random.randint(1,9)
siete=random.randint(1,9)
ocho=random.randint(1,9)
nueve=random.randint(1,9)
diez=random.randint(1,9)
once=random.randint(1,9)
doce=random.randint(1,9)
trece=random.randint(1,9)
catorce=random.randint(1,9)
quince=random.randint(1,9)
dieciseis=random.randint(1,9)
unp=uno*2
if unp>9:
unp-=9
dop=tres*2
if dop>9:
dop-=9
trp=cinco*2
if trp>9:
trp-=9
cap=siete*2
if cap>9:
cap-=9
cip=nueve*2
if cip>9:
cip-=9
sep=once*2
if sep>9:
sep-=9
seep=trece*2
if seep>9:
seep-=9
oip=quince*2
if oip>9:
oip-=9
comprobacion=unp+dop+trp+cap+cip+sep+seep+diez+doce+catorce+dieciseis
if comprobacion%10==0:
n=[unp,dop,trp,cap,cip,sep,seep,diez,doce,catorce,dieciseis]
we=''.join(n)
print we
print "Hecho"