# Ejemplo de funciones. Comprobar NIF correcto

## Enunciado

Crear una función que compruebe si **el NIF introducido** por un usuario es correcto.

Un NIF es correcto si tienen 8 dígitos y letra. La última letra del DNI se calcula a partir de sus números, se divide el número por 23 y el resto es un número entre 0 y 22. La letra que corresponde a cada número la tienes en esta tabla:

![](https://156834076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3CsDMenpAVuNy6kou5%2F-M4aHPkU-YgUDjYc_HaA%2F-M4aHtgbR42xNPBF1i_l%2FdNI.jpg?alt=media\&token=4e57098b-c2c5-4a41-9723-e84bf4c0030a)

## Análisis:

* Preguntar al usuario el NIF.
* Crear una función `def` que indique si el NIF es correcto o no.
* Si no ha tecleado el NIF correcto, volver a pedírselo a pedir `while`.

### Diagrama

![](https://156834076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3CsDMenpAVuNy6kou5%2F-M4aHPkU-YgUDjYc_HaA%2F-M4aHpzLNr95FRHCnkIt%2Fdiagrama.jpg?alt=media\&token=5bbae620-2c43-4c57-b8c0-065df4794736)

### Código

```python
#Verificar un NIF
#Inicializar las variables
def verificar_dni(nif):
    tabla = "TRWAGMYFPDXBNJZSQVHLCKE"
    numeros = "1234567890"
    bandera=False
    if (len(nif) == 9):
          letraControl = nif[8].upper()
          dni = nif[:8]
          if dni.isdigit():
              if tabla[int(dni)%23] == letraControl:
                  mensaje="El NIF introducido es correcto"
                  bandera=True
              else:
                  mensaje="No ha introducido un NIF valido, tecléalo de nuevo"

    else:
        mensaje="El NIF, debe tener 9 carcateres teclealo de nuevo"
    return bandera, mensaje


#Pedir el NIF
bandera=False
while bandera==False:
    nif = input("Introduzca el NIF: ").upper()
    bandera,mensaje=verificar_dni(nif)
    print(mensaje)
print("Fin de programa")
```

### Ejecutarlo

{% embed url="<https://colab.research.google.com/drive/1TrJ-W0gucMe4KfHFnHZvE_682F3LGwrG>" %}
