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
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:
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:
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.
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:
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:
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:
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
:
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:
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.