miércoles, 4 de julio de 2018

Calcular la Letra del DNI en Python

Reto: Letra del DNI

Generar primero una lista con los números entre 0 y 10, luego generar otra lista con los números del 11 al 20. Unir ambas lista e imprimir el resultado.



En España el DNI (Documento Nacional de Identidad) tiene un número y una letra de control que se obtiene mediante un sencillo algoritmo: Wikipedia.


Método 1

Solicitamos a usuario el número del DNI. Definimos el string que contiene la secuencia de letras utilizadas en el algoritmo: TRWAGMYFPDXBNJZSQVHLCKE. Imprimimos la letra del DNI que se calcula obteniendo el resto, módulo o resíduo de dividir el DNI entre 23. El resto varia entre 0, que supone división exacta, y 22. Consultamos la palabra para ver el caracter que corresponde. Si el resto es cero corresponde una T y si es 22 corresponde una E.

n=int(input("Introduzca el número del DNI:"))
palabra='TRWAGMYFPDXBNJZSQVHLCKE'
print('La letra del DNI es: ', palabra[n%23])


Método 2

En este caso trabajamos con una lista en lugar de usar un string. Tambíen hemos incluido al incio unas líneas con replace que eliminarán los puntos o espacios que el usuario introduzca junto con el número del DNI.

x=input("Introduzca el número del DNI: ")
x=x.replace(' ','')
x=x.replace('.','')
x=int(x)
lista=['T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E']
print(x)
print('La letra del DNI es: ', lista[x%23])

4 comentarios:

  1. #One line
    print('La letra del DNI es:','TRWAGMYFPDXBNJZSQVHLCKE'[int(input("Introduzca el número del DNI:"))%23])

    ResponderEliminar
  2. def letradni(dni):
    letras='TRWAGMYFPDXBNJZSQVHLCKE'
    return dni,letras[dni%23]

    ResponderEliminar
  3. También puedes usar el paquete de Python llamado dni. Se installa con un: "pip install dni".

    https://github.com/pmartincalvo/dni

    ResponderEliminar
  4. como lo responderias en c++?, gracias

    ResponderEliminar