[MÚSICA] [MÚSICA] Para poner en práctica las instrucciones condicionales, empecemos con un sencillo ejercicio. Nos piden crear una función que reciba por parámetro un número entero y no retorne alguno de los siguientes valores: -1 si es un número negativo, 0 si es positivo, pero menor a 1000, 1 si está entre 1000 y 10000 o 2 si es un número mayor a 10000. Analizando el problema, tenemos que, básicamente, nos piden encontrar en qué rango se encuentra el número dado. Planteemos primero las soluciones pseudocódigo antes de pasar a Python. Nos quedaría algo así. Teniendo nuestro número entero n, tendríamos que, si n es negativo, en otras palabras, menor a 0, entonces se debe retornar -1. Si n es positivo, en otras palabras, menor a 0 y menor que 1000, entonces, se debe retornar 0. Si n es mayor o igual a 1000 y menor o igual a 10000, entonces, se debe retornar 1. Si n es mayor a 10000, que sería básicamente si ninguno de los casos anteriores se cumple, importante que tengamos esto en cuenta, se debe retornar 2. you con nuestro problema planteado en estos términos, pasemos a Spider y creemos nuestro código en Phyton. Creamos nuestra función llamada rango número, y que recibe un número entero y retorna un entero también. Nos queda def rango numero, x de tipo entero y el retorno de tipo entero, e iniciamos con nuestros condicionales. Empezamos verificando si es negativo. If x menor que 0. Y ponemos que, en este caso, se retorna -1. Return -1. Lo siguiente nos dice que veamos si el número es positivo y menor que 1000. Vamos a utilizar un condicional en cascada, es decir, un elif, para continuar, you que la condición está relacionada con la anterior, estamos evaluando rangos, así que todas las condiciones tienen que ver entre sí, y para aprovechar, el hecho que en la cascada, tan pronto se cumple una condición, las demás no se evalúan, lo que implica que, si al ejecutarse, llega al elif, es porque lo anterior no se cumplió. Es decir, que you podríamos dar por hecho que x no era negativo, o en otras palabras, es mayor o igual que 0. Siendo así, solo nos quedaría por evaluar que x es menor que 1000. Es decir, elif x menor que 1000, y en ese caso, retornar 0, return 0. Para la siguiente, seguimos la cascada. Acá solo necesitaremos evaluar que x sea menor o igual que 10000 con la misma razón que vimos anteriormente, elif x menor o igual que 10000. Y ponemos return 1 en este caso. [AUDIO_EN_BLANCO] Nos queda faltando la última condición. Como habíamos dicho, x mayor que 10000 es cuando ninguno de los otros casos se cumple, así que podemos concluir nuestra cascada con un else, else, y en ese caso, return 2. Con eso tendríamos lista nuestra función. Podemos probarla con algunos valores. Ejecutemos la primera. Invoquemos la función rango número, e iniciemos probando con el número, por ejemplo, -2. En este caso, vemos que la función nos da -1. Probemos de nuevo. Ahora utilicemos un número como, por ejemplo, 500. Vemos que nos da 0. Probémosla de nuevo, esta vez con 4500. Vemos que obtenemos 1. Y probémosla ahora con 12000. En este caso, vemos que damos Enter y nos da 2. Efectivamente, la función no retorna siempre lo esperado. Sin embargo, veamos que podemos realizar otra versión teniendo en cuenta algunas mejores prácticas de programación. Utilizar value return, aunque es posible, es una práctica poco recomendable, you que se presta para errores como dejar caminos de ejecución sin retorno, en especial cuando tenemos condiciones bastante complejas. Para evitar esto, podemos usar un único retorno al finalizar la función, utilizando una variable cuyo valor modificamos dentro de los condicionales. En este caso, podemos crear, por ejemplo, una variable llamada respuesta, a la cual le asignamos un valor diferente en cada condicional, el que corresponda según cada caso. Podríamos hacer entonces que, en el primero, respuesta es igual a -1, en el segundo tendríamos que respuesta es igual a 0, en el tercer caso tenemos que respuesta es igual a 1 y en el último tendríamos finalmente que la respuesta sería igual a 2. Finalmente, al final de la función, retornamos nuestra variable, es decir, return respuesta, que, según la condición que se cumpla, tendrá el valor correspondiente. Para la solución utilizamos condicionales en cascada, pero veamos qué sucedería si usamos condicionales independientes. En el caso de usar independientes, se van a evaluar todos, así se cumpla antes alguno. Esto nos obliga a poner las condiciones que podríamos omitir al usar la cascada, o tendríamos resultados erróneos al poner un número a cumplir múltiples condicionales. Además, you no podríamos usar else al final, sino incluir explícitamente la condición para el último rango. Como vemos, a pesar de que ambas soluciones funcionan, la cascada es mejor en esta situación, donde al cumplirse una de las condiciones, you podemos descartar las demás. Más adelante, veremos que no siempre usar condicionales independientes o cascada es equivalente, así que siempre es necesario analizar cuál estructura usar para llegar a los resultados deseados teniendo en cuenta el comportamiento de cada una de las opciones. [MÚSICA]