Andaba haciendo un code para generar los 16 digits de una cc valida e hice este code,pero no me da ninguna salida haber si le ven el fallo.
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.
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"
Cita de: Ricardo95 en 25 Enero 2011, 18:11 PM
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.
from random import randint
n=[]
for w in range(1,16):
i=randint(1,9)
if w%2:
i*=2
if i>9:i-=9
n+=i,
print ''.join(map(str,n))
if sum(n)%10:
print ":)"
else:
print ":("
Tu haces cosas extrañas en tu codigo... pero según tu definición del algoritmo mi codigo funciona perfecto :xD
PD: Hubiese sido mas sencillo entender el algoritmo si usases los signos de puntuación... ya sabes: comas, puntos... etc
Cita de: Karcrack en 25 Enero 2011, 21:53 PM
from random import randint
PD: Hubiese sido mas sencillo entender el algoritmo si usases los signos de puntuación... ya sabes: comas, puntos... etc
[/quote]
Como toda gente normal.
Muchas gracias, se muy poco de python intentare etender tu code. Repito gracias