Skip to content

Instantly share code, notes, and snippets.

@Freddyerf
Last active September 13, 2022 14:55
Show Gist options
  • Save Freddyerf/2f3adfbf9450b4128320b93881237cdb to your computer and use it in GitHub Desktop.
Save Freddyerf/2f3adfbf9450b4128320b93881237cdb to your computer and use it in GitHub Desktop.
Validación de cédula dominicana en Python
"""
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
@leon486
Copy link

leon486 commented Feb 3, 2021

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

@ecr007
Copy link

ecr007 commented May 7, 2022

leon486 Eso no es Python!! xD

@leon486
Copy link

leon486 commented May 8, 2022

@ecr007 Lo hice en Python y en javascript, has scroll hasta abajo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment