Este post es parte del Curso de introducción a Python 3:
- Introducción a Python: Porque programar con Python
- Instalación de Python 3 y IDLE
- Primer programa: “Hola Mundo”
- Tipos de datos en Python
- Asignación y uso de variables
- Valores booleanos
- Colecciones de datos en Python: Listas y Tuplas
- Condicionales: If, else, elif
- Ciclos en Python
- Definición y uso de funciones en Python
- Importación y uso de módulos en Python
- Uso de strings en Python
Tabla de contenidos
Introducción
Las condicionales o estructuras de control en programación son sentencias que nos permiten comprobar la existencia de ciertas condiciones para permitir cambiar el comportamiento de nuestro programa en consecuencia.
Condicionales
If
La sentencia condicional if
es la forma más sencilla de comprobar si una condición se esta cumpliendo o no, y la incluimos en nuestro código de la siguiente forma:
if EXPRESION_BOOLEANA: CODIGO_A_EJECUTAR
Por ejemplo:
https://gist.github.com/Nxz02/f0862f07e4b7b01836e0417662358e7f
Como puedes ver, después de la expresión booleana (condición) y los dos puntos :
dejamos un salto de línea y cierta sangría antes de continuar con el código que se va a ejecutar cuando la condición sea verdadera. Esta sangría es llamada indentación, y en Python es muy importante para mantener la consistencia de nuestro código. Aunque a Python 3 no le importa el tamaño de la indentación mientras sea usada de manera consistente, por norma general, esta indentación es igual a cuatro espacios en blanco o una tabulación; ten en cuenta que la indentación representa el bloque de código que se va a ejecutar cuando se cumpla la condición, y si el código no esta indentado, no será considerado parte del bloque condicional, como puedes ver abajo:
https://gist.github.com/Nxz02/22ff442e0e1862ccd811f864f1f6cd65
Por el contrario, si realizamos una indentación incorrecta o incosistente, Python nos regresará un error, ya que la indentación es utilizada por el interprete para organizar el código:
Si la condición retorna False
, entonces el código simplemente no se ejecutará:
Dentro de nuestro bloque if siempre debe ir al menos una línea de código, sin embargo, si deseamos que no ocurra nada por alguna razón, podemos utilizar pass
, sentencia pensada para reservar espacio para código aún no escrito.
https://gist.github.com/Nxz02/fd31989f08836b52585118a66062a113
Else
La sentencia else
nos permite ejecutar código cuando la condición de la sentecia if
no se cumpla; es util cuando dos posibilidades pueden ocurrir y queremos determinar que código ejecutar.
La sentencia else
se utiliza sin indicar ninguna condición, de la siguiente manera:
if EXPRESION_BOOLEANA: CODIGO_A_EJECUTAR else: CODIGO_A_EJECUTAR
Por ejemplo:
https://gist.github.com/Nxz02/b9946d9ec37f486bbb81dfb3a2b34ec1
Si incluyes un bloque else
, este debe aparecer inmediatamente después del if
, sin ninguna línea independiente en medio, de lo contrario, obtendremos un error, como ocurriría con el siguiente código:
https://gist.github.com/Nxz02/b4826d4d82cd48b9e4343c53d47365f8
Esto ocurre ya que al imprimir la línea 4, la unión entre las sentencias if-else
se rompe, y un bloque else
nunca puede aparecer si no esta ligado a un bloque if
.
De igual forma que el bloque contenido después de la sentencia if
, después de else
no tenemos un límite de líneas a escribir, pero tenemos que incluir al menos una línea de código.
Elif
La tercer estructura de control en Python es la sentencia elif
, contracción de else if
.
La condicional elif
, al igual que else, se ejecuta sólo si la condición en if
no se cumple, pero como if
, permite especificar una condición que activará el código que contenga.
elif
se incluye después de if
, pero antes de else
:
if EXPRESION_BOOLEANA: CODIGO_A_EJECUTAR elif EXPRESION_BOOLEANA: CODIGO_A_EJECUTAR else: CODIGO_A_EJECUTAR
Por ejemplo:
https://gist.github.com/Nxz02/2361f732ef9ebfe542876f1e9de0a47c
Cuando la sentencia elif
es incluida, debe ir precedida de un if
, pero no es necesario incluir un else
después de elif
. A diferencia de la sentencia else
, que sólo puede ser incluida una vez después de una condición, podemos incluir multiples bloques elif
:
https://gist.github.com/Nxz02/6be02275df7116f01eb6b6f3b49c7a3e
Es importante notar que la sentencia elif
se ejecuta en lugar de if
y no junto a esta. Como se puede ver en el siguiente código, donde ambas condiciones son iguales pero sólo un bloque de código se ejecuta:
Anidación
¿Qué debemos hacer si queremos ejecutar varias estructuras de control encadenadas? Para estos casos, existen los bloques anidados, es decir, bloques condicionales que estan dentro de otros bloques:
if EXPRESION_BOOLEANA: if EXPRESION_BOOLEANA: CODIGO_A_EJECUTAR
La sintaxis anterior es la forma más sencilla de utilizar condiciones anidadas, pero también podemos incluir bloques if-else-elif dentro de otros bloques if-else-elif sin ninguna restricción más allá de respetar la estructura de estos y aumentar la indentación según cada nivel de anidación, como en el ejemplo:
https://gist.github.com/Nxz02/f519c451b9ca483355e813931c795de3
Cuando existen bloques anidados, las condiciones se evaluarán desde el nivel de menor indentación hasta el de mayor, en caso de que la primera condición no se cumpla, todo ese bloque se ignorará.
Conclusión
La inclusión de condicionales o estructuras de control en nuestro código es un elemento que nos permitirá volverlo más «inteligente», al poder reaccionar a diferentes situaciones. Sin embargo, es importante no abusar de las condiciones, ya que cada comparación ralentiza ligeramente nuestro programa, y cuando se llega a un numero muy grande de comparaciones el rendimiento del programa se verá afectado. De igual manera, es recomendable utilizar los bloques anidados de manera prudente, tanto por el rendimiento del programa, como por la legibilidad del código.
En el siguiente post exploraremos los ciclos repetitivos y su utilidad en Python.
Deja una respuesta