En esta entrada vamos a trabajar con la forma del comando if: if-elif-else.
Este tipo de construcción nos permite realizar varias comprobaciones consecutivas y realizar operaciones distintas en función de la condición que se cumpla. Estas comprobaciones se hacen en cadena, una detrás de otra, hasta que se cumple la condición concreta.
Vamos a echar un ojo a la ayuda del comando if 🙂
Si nos fijamos, según la sintaxis, nos están indicando que podemos utilizar varias sentencias elif una detrás de otra, si queremos comprobar distintas condiciones en cadena. Esto es así por los puntos suspensivos, algo que no aparece detrás del else.
Vamos a ver un ejemplo que es como mejor lo comprenderemos
Versión 2 – Nota por parámetro
Versión 3 – Control de errores
Vamos a controlar que el usuario pase un valor por parámetro. Si no se pasa la nota por parámetro mostramos un mensaje de error adecuado y termina la ejecución del script con código de salida de error.
¿Cómo comprobamos si se ha pasado algún valor por parámetro? Comprobando si la variable que almacena el primer parámetro está vacía 🙂
Esto mola 🙂
No obstante…
El rango de valores que controlamos está entre el 1 y el 10. Vamos a controlar que el valor pasado por parámetro esté entre el 1, inclusive, y el 10. Si no es así, mensaje de error adecuado y terminamos la ejecución del script devolviendo un código de salida de error.
«Si la nota es mayor que 10 o menor que 1 entonces». Vamos a intentar solo si la nota es mayor que 10.
¿y si usaramos dos ifs?
Esto funciona, pero no es correcto del todo. Podríamos utilizar un solo comando test:
Versión 4 – Si el usuario no pasa la nota por parámetro, pídeselo por teclado!
En esta versión vamos a ser un poco más comprensivos con el usuario. Si no pasa la nota por parámetro, se la vamos a pedir por teclado. Si en esta ocasión tampoco inserta ningún valor, entonces es cuando mostraremos el mensaje de error adecuado y salimos del script con código de salida de error.
Solución
Primero obtenemos el valor de nota del primer parámetro. Si el valor de nota está vacío, entonces pedimos por teclado el valor de nota. Ahora, si el valor de nota está vacío, entonces mostramos mensaje de error.
Vamos a crear una función para error, así tenemos el código más organizado.
Versión 5 – Mientras el usuario inserte notas, las mostramos
Vamos a darle una vueltita, ahora vamos a solicitar el nombre del alumno al que corresponde la nota y la nota por teclado. Mientras el usuario inserte el nombre de un alumno por teclado, solicitaremos una calificación y mostraremos el mensaje de calificación para dicho alumno.
Solución
«Mientras el usuario inserte el nombre de un alumno…» Está claro que tenemos que usar un bucle while.
Primero le vamos a pedir el nombre de un alumno por teclado. Una vez tengamos este valor, escribimos el bucle while, que comprobará que la variable que contiene el nombre del alumno no esté vacía: «Mientras el usuario inserte un nombre de un alumno –> Mientras la variable alumno no esté vacía…»
Si nos fijamos, el código que hay dentro del bucle while es, quizá, demasiado grande y dificulta razonar sobre el propio bucle. Quizá podríamos sacar parte del código en funciones, sobre todo porque muchos de esos comandos tienen una función como grupo.
Si estos conjuntos de comandos los agrupamos en dos funciones que se encarguen de llevar a cabo el objetivo, la finalidad o la función de cada grupo, nos quedaría el script así:
Ahora la funcionalidad principal del script quedaría así:
Hemos creado dos funciones, una que se encarga de obtener una nota válida y otra que se encarga de mostrar la nota con los requisitos que nos han dado.
Versión 6 – Leyendo de fichero se vive mejor
Vamos a cambiar el script para que ahora lea los datos de fichero. De esta forma, el script recibirá por parámetro la ruta de un fichero que contiene la información de alumnos y sus notas.
El fichero contiene en cada línea el nombre de un alumno y su nota, separados por el caracter «:».
Ejemplo del fichero:
Si el usuario no pasa la ruta del fichero por parámetro, mostraremos un mensaje de error adecuado y terminaremos la ejecución del script con un código de salida de error.
Si el fichero no existe, mostraremos un mensaje de error adecuado y terminaremos la ejecución del script con un código de salida de error.
Dejar una respuesta