Practiquemos el uso del centinela con un par de ejercicios. Debemos crear una función llamada "cantidad_digitos" que nos permita contar la cantidad de dígitos que tiene un número entero. Debemos, además, incluir el programa principal que nos permita pedir el número al usuario y mostrarle la cantidad de dígitos que tiene. Pasemos a Spyder para la implementación. Tenemos nuestra función ya creada, que recibe un número entero como parámetro y tenemos una variable que empieza en cero, en la cual llevaremos la cuenta de los dígitos. Recordemos que si tomamos un número y realizamos una división entera entre diez, estamos eliminando el último de los dígitos del número. Si hiciéramos esto hasta que el número se reduzca a cero y contamos uno cada vez que hacemos dicha operación, estaríamos contando entonces la cantidad de dígitos que nos forman nuestro número. Creemos ahora nuestra variable centinela: "terminar igual a 'False'", para que nos indique que mientras sea falsa, tenemos que seguir con el ciclo de nuestra solución. Nos queda entonces "'while', terminar, igual, igual a 'False'". Ahora, debemos incluir la condición de parada del ciclo. En nuestro caso, es cuando nuestro número queda en cero, después de recortarlo mediante divisiones, nos queda "'if' numero es igual, igual a cero". Entonces terminar es igual a "True". Así, cuando alcancemos el cero, el centinela cambia de valor, haciendo que se termine el ciclo. Ahora en el "else" incluimos lo que debemos hacer en cada iteración, mientras no hayamos terminado de contar, qué será: "'else', contador, más igual uno, y número, dividido, división entera, dividido igual en diez". Esto nos dice que aumentamos el contador en uno, cada vez que podamos iterar y luego reducimos el número dividiendo en diez y almacenando el resultado en la misma variable. Nos queda retornar el contador y habremos terminado con la función. Ahora, incluimos un programa principal, que nos permita ejecutar la función y probamos. Ejecutamos. Intentamos con 1.993 y vemos que nos dice que tiene cuatro dígitos, como era de esperarse. Pasemos al segundo problema. Tenemos que crear una función que permita calcular el factorial de un número, que se define como la multiplicación de todos los enteros, desde el uno hasta el número del cual queremos conocer el factorial. Debemos tener en cuenta que cero factorial es igual a uno y que tenemos que incluir un programa principal, en el que solo se acepten enteros positivos. Desarrollemos la solución en Spyder. Empezamos con nuestra función ya definida y la variable que nos servirá como centinela, además de otra en la que llevaremos el cálculo del factorial que empieza en uno, para cubrir el caso del cero factorial. Haremos las multiplicaciones desde nuestro número "n" hasta llegar al cero, ya que es lo mismo multiplicar todos desde uno hasta "n", que viceversa. Asimismo, tenemos la estructura general de nuestro ciclo, en el que el centinela marca si se continúa o no y dentro del mismo, se evalúa la condición de parada, en este caso, cuando nuestra "n" llegue a ser cero. Nos falta completar el caso en que hemos continuar, donde lo que haremos es multiplicar "n" por la variable donde vamos calculando el factorial y luego restar uno a nuestra "n" para la siguiente iteración. Nos queda: "'else', factorial, por, igual nuestra 'n' y 'n' menos, igual, uno". Finalmente, retornamos el factorial y habremos terminado la función. He incluido nuevamente el programa principal, en el que tenemos un ciclo para asegurarnos de que el usuario ingrese un número positivo, similar al realizado en el pasado "Manos a la obra". Ejecutemos nuestro programa para probarlo. Ingreso un negativo para comprobar que el ciclo funciona. Vemos que sí y ahora sí, incluimos un número positivo, para que se calcule el factorial, pondré cinco y vemos que da 120, como era de esperarse.