Link Search Menu Expand Document

Letra DNI

Calcular letra DNI en Python

En España todo Documento Nacional de Identidad (DNI) está compuesto por 8 dígitos y una letra al final. Esta letra actúa a modo de checksum. Es decir, la letra se calcula a partir de los dígitos del DNI.

Podemos escribir una función en Python que dado un DNI nos devuelva el DNI con la letra de la siguiente manera.

def letra_dni(dni):
    if len(str(dni)) != 8:
        raise Exception("El DNI debe tener 8 dígitos")
    LETRAS_DNI = 'TRWAGMYFPDXBNJZSQVHLCKE'
    return f"{dni}{LETRAS_DNI[int(dni) % 23]}"

print(letra_dni('00000000'))
# 00000000T

Como puedes ver:

  • Se comprueba que el DNI tiene 8 dígitos.
  • La letra se calcula usando el módulo 23 del DNI.
  • Se elige la letra de la secuencia.
  • Si el resultado es 0, se toma la T, si es 1 la R, etc.