-
-
Save Freddyerf/2f3adfbf9450b4128320b93881237cdb to your computer and use it in GitHub Desktop.
""" | |
Validación de cédula dominicana en Python por: Freddy Rondon | |
""" | |
def validar_cedula(cedula): | |
# La cédula debe tener 11 dígitos | |
cedula = cedula.replace('-','') | |
if len(cedula)== 11: | |
if (int(cedula[0:3]) < 122 and int(cedula[0:3]) > 0 or int(cedula[0:3]) == 402): | |
suma = 0 | |
mutliplicador = 1 | |
verificador = 0 | |
# Los dígitos pares valen 2 y los impares 1 | |
mutliplicador = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2] | |
for i in range(10): | |
# Se multiplica cada dígito por su paridad | |
digito = int(cedula[i])*mutliplicador[i] | |
# Si la multiplicación da de dos dígitos, se suman entre sí | |
if(digito>9): | |
digito = digito//10 + digito%10 | |
# Y se va haciendo la acumulación de esa suma | |
suma = suma + digito | |
# Al final se obtiene el verificador con la siguiente fórmula | |
verificador = (10 - (suma % 10) ) % 10 | |
# Se comprueba que coincidan | |
if(verificador == int(cedula[10]) ): | |
return True | |
# El dígito verificador no es válido | |
else: | |
return False | |
# La serie no es válida | |
else: | |
return False | |
# No tiene 11 dígitos | |
else: | |
return False |
¿Cómo imprimes el resultado de esa función?
Hola, @Enmah4k :
Para imprimir el resultado simplemente utilizas un condicional (Si la función retorna true imprimes lo que quieras, de lo contrario lo mismo).
Por otro lado, si lo que quieres es que imprima el resultado dependiendo el error, en lugar de retornar verdadero o falso (true/false) retornas un string en cada caso.
Saludos,
Hola @Freddyerf,
Me gustó mucho tu código funciona bastante bien. Excelente trabajo y buenísimos comentarios.
Hice un Fork con muchas mejoras a tu código quitando el uso de variables innecesarias, ifs anidados, hice el código más corto, más legible y agregué pruebas.
Puedes verlo aquí: https://gist.github.com/leon486/083cbffd137c02a58607f9de8565bf36
leon486 Eso no es Python!! xD
@ecr007 Lo hice en Python y en javascript, has scroll hasta abajo.
¿Cómo imprimes el resultado de esa función?