En al artículo anterior vimos cómo escribir condiciones en Python, para que una parte del código funcione si se verifica una comparación. Ahora vamos a profundizar en este tema y ver que otras posibilidades tenemos a nuestra disposición.
En el programa de la ley de Ohm empleamos el formato mas simple de la instrucción if de Python que es el siguiente:
Y vimos su utilidad para evitar caer en una condición de error si se daba una división por cero. Sin embargo, a veces necesitamos realizar una o varias acciones si se cumple la condición y otra u otras si la condición no se cumple. En Python podemos hacerlo recurriendo a la instrucción else que se usa junto con if. Else es el equivalente de la expresión en español “si no” y sirve para “hacer algo” si la condición que pusimos en el if NO se cumple:
Escrito de esta forma, si la condición SI se cumple, se ejecutan las instrucciones 1 y 2, pero si la condición NO se cumple, se ejecutan las 3 y 4. Luego del else se deben escribir dos puntos (:) y las instrucciones que le siguen también deben estar indentadas.
Hagamos una versión mas refinada del último programa de la ley de Ohm que calcula la corriente:
Como se puede comprobar al hacerlo funcionar, si la resistencia es distinta de cero, (if) calcula la corriente e imprime, si no (else) imprime un mensaje de error.
Como ejemplo adicional de las instrucciones condicionales hagamos una calculadora de la ley de ohm que, a elección, nos permita calcular tensión, intensidad o resistencia.
En la línea 3 la instrucción input permite ingresar la magnitud que deseamos calcular, “V” para la tensión, “I” para la corriente y “R” para la resistencia.
Luego sigue una serie de instrucciones if-else anidadas, es decir, una dentro de otra. Vemos como la indentación de las instrucciones le agrega claridad al programa (además de ser obligatoria).
En la línea 4 el if “pregunta” si queremos calcular la tensión (“V”). Si es así, pide la corriente, la resistencia y la calcula. En la línea 10, el else funciona si no ingresamos “V”, por lo que el if de la línea 11 pregunta si lo que se desea calcular es la corriente (“I”). Si la respuesta es verdadera, pide los datos, calcula la corriente e imprime el resultado. Si no ingresamos “I”, el programa en cambio seguirá por el else de la línea 17, seguido del if de la línea 18 que consulta por la última posibilidad, si ingresamos “R”. Si es así, pide los datos, calcula la resistencia e imprime su valor. Finalmente, el else de la línea 24 sirve para el caso de que, por error, no hayamos ingresado ni “V” ni “I” ni “R”, por lo que muestra un mensaje de error (siempre es buena idea considerar que podemos cometer errores al utilizar un programa).
La salida de este programa con algunos datos de prueba es la siguiente:
En este código hay varias condiciones anidadas, varios “else” seguidos de un “if”. Para casos así hay una forma de simplificar el código empleando la instrucción elif, que es como una combinación de else + if:
Si se cumple la condición1, se ejecutan las instrucciones 1 y 2, si no, se comprueba la condición2. Si la condición2 se cumple, se ejecutan las instrucciones 3 y 4 y si no es así, funcionan las instrucciones 5 y 6.
Usando elif nuestra calculadora quedaría de esta forma:
Ninguna de estas dos versiones de nuestra calculadora verifican si se realiza una división por cero, para no complicar tanto el código pero ¿se animan a agregarlo?
En el siguiente artículo seguiremos agregando herramientas para resolver problemas cada vez mas complejos usando Python.