Last active
September 13, 2022 14:55
-
-
Save Freddyerf/2f3adfbf9450b4128320b93881237cdb to your computer and use it in GitHub Desktop.
Validación de cédula dominicana en Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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