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
Copy link

ghost commented Jul 5, 2018

¿Cómo imprimes el resultado de esa función?

@Freddyerf
Copy link
Author

¿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,

@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