En Python if es una de las principales sentencias de control de flujo, junto a while y for.
En este tutorial te mostraré en detalle la sentencia if de control de flujo en Python, desde la estructura más básica hasta las diferentes alternativas.
Índice
Python if – Sentencia básica
En Python, la sentencia if se utiliza para ejecutar un bloque de código si, y solo si, se cumple una determinada condición. Por tanto, if es usado para la toma de decisiones.
La estructura básica de esta sentencia if es la siguiente:
if condición: bloque de código
Es decir, solo si condición
se evalúa a True
, se ejecutarán las sentencias que forman parte de bloque de código
. En caso de que se evalúe a False
no se ejecutará ninguna sentencia perteneciente a bloque de código
.
Aquí, condición
puede ser un literal, el valor de una variable, el resultado de una expresión o el valor devuelto por una función.
En las expresiones es muy común usar los operadores booleanos y de comparación.
❗️IMPORTANTE: El cuerpo del bloque está indicado con un sangrado mayor. Dicho bloque termina cuando se encuentre la primera línea con un sangrado menor.
Veamos un ejemplo:
x = 17 if x < 20: print('x es menor que 20')
En el código anterior la variable x
toma el valor 17
. En la línea 2, la condición de la sentencia if
evalúa si x es menor que 20
. Como el valor devuelto por la expresión es True
, se ejecuta el bloque del if
, mostrando por pantalla la cadena x es menor que 20
.
Veamos otro ejemplo:
valores = [1, 3, 4, 8] if 5 in valores: print('está en valores') print('fin')
En este caso tenemos una lista de valores
. El if comprueba si el número 5
se encuentra entre estos valores
. Como la expresión devuelve como resultado False
, porque 5
no está entre los valores
, el código anterior simplemente mostrará por pantalla la cadena fin
.
Si repetimos el ejemplo anterior, modificando la condición a esta otra 3 in valores
, el resultado del programa sería:
está en valores fin
❗️ RECUERDA: En principio, en Python todos los objetos/instancias se evalúan a True
a excepción de None
, False
, 0
de todos los tipos numéricos y secuencias/colecciones vacías, que se evalúan a False
.
Sentencia if … else
Hay ocasiones en que la sentencia if
básica no es suficiente y es necesario ejecutar un conjunto de instrucciones o sentencias cuando la condición se evalúa a False
.
Para ello se utiliza la estructura if ... else...
Esta es estructura es como sigue:
if condición: bloque de código (cuando condición se evalúa a True) else: bloque de código 2 (cuando condición se evalúa a False)
Imagina que estás implementado un programa en el que necesitas realizar la división de dos números. Si divides un número entre 0, el programa lanzará un error y terminará. Para evitar esto, podemos añadir una sentencia if ... else...
como en el ejemplo siguiente:
resultado = None x = 10 y = 2 if y != 0: resultado = x / y else: resultado = f'No se puede dividir {x} entre {y}' print(resultado)
El resultado del script anterior es 5.0
. Si ahora actualizamos el valor de y
a 0
, el resultado sería este otro:
No se puede dividir 10 entre 0
if … elif … else
También es posible que te encuentres situaciones en que una decisión dependa de más de una condición.
En estos casos se usa una sentencia if compuesta, cuya estructura es como se indica a continuación:
if cond1: bloque cond1 (sentencias si se evalúa la cond1 a True) elif cond2: bloque cond2 (sentencias si cond1 es False pero cond2 es True) ... else: bloque else (sentencias si todas las condiciones se evalúan a False)
Es decir, en esta ocasión, se comprueba la condición cond1
. Si se evalúa a True
, se ejecuta el bloque bloque cond1
y después el flujo continúa después del bloque if.
Sin embargo, si cond1
se evalúa a False
, se comprueba la condición cond2
. Si esta se evalúa a True
, se ejecuta el bloque de sentencias bloque cond2
. En caso contrario, pasaría a comprobar la condición del siguiente elif
y así sucesivamente hasta que llegue al else
, que se ejecuta si ninguna de las condiciones anteriores se evaluaron a True
.
Veamos un ejemplo. Imagina que queremos comprobar si un número es menor que 0, igual a 0 o mayor que 0 y en cada situación debemos ejecutar un código diferente. Podemos hacer uso de la estructura if … elif … else anterior:
x = 28 if x < 0: print(f'{x} es menor que 0') elif x > 0: print(f'{x} es mayor que 0') else: print('x es 0')
En el ejemplo anterior x
toma el valor 28
. La primera condición de la sentencia if
se evalúa a False
y pasa a la siguiente (a la del bloque elif
). En esta ocasión, la expresión se evalúa a True
, mostrándose por pantalla la cadena 28 es mayor que 0
.
Sentencias if anidadas
Para terminar este tutorial, simplemente me gustaría añadir que en cualquiera de los bloques de sentencias anteriores se puede volver a incluir una sentencia if, o if … else … o if … elif … else …
Por ejemplo, podemos simular el caso de la última sección de la siguiente manera:
x = 28 if x < 0: print(f'{x} es menor que 0') else: if x > 0: print(f'{x} es mayor que 0') else: print('x es 0')