Link Search Menu Expand Document

Condicional en Python

De no ser por las estructuras de control, el código en cualquier lenguaje de programación sería ejecutado secuencialmente hasta terminar. Un código, no deja de ser un conjunto de instrucciones que son ejecutadas unas tras otra. Gracias a las estructuras de control, podemos cambiar el flujo de ejecución de un programa, haciendo que ciertos bloques de código se ejecuten si y solo si se dan unas condiciones particulares.

Uso del if

Un ejemplo sería si tenemos dos valores a y b que queremos dividir. Antes de entrar en el bloque de código que divide a/b, sería importante verificar que b es distinto de cero, ya que la división por cero no está definida. Es aquí donde entran los condicionales if.

a = 4
b = 2
if b != 0:
    print(a/b)

En este ejemplo podemos ver como se puede usar un if en Python. Con el operador != se comprueba que el número b sea distinto de cero, y si lo es, se ejecuta el código que está identado. Por lo tanto un if tiene dos partes:

  • La condición que se tiene que cumplir para que el bloque de código se ejecute, en nuestro caso b!=0.
  • El bloque de código que se ejecutará si se cumple la condición anterior.

Es muy importante tener en cuenta que la sentencia if debe ir terminada por : y el bloque de código a ejecutar debe estar identado. Si usas algún editor de código, seguramente la identación se producirá automáticamente al presionar enter. Nótese que el bloque de código puede también contener más de una línea, es decir puede contener más de una instrucción.

if b != 0:
    c = a/b
    d = c + 1
    print(d)

Todo lo que vaya después del if y esté identado, será parte del bloque de código que se ejecutará si la condición se cumple. Por lo tanto el segundo print() “Fuera if” será ejecutado siempre, ya que está fuera del bloque if.

if b != 0:
    c = a/b
    print("Dentro if")
print("Fuera if")

Existen otros operadores que se verán en otros capítulos, como el de comparar si un número es mayor que otro. Su uso es igual que el anterior.

if b > 0:
    print(a/b)

Se puede también combinar varias condiciones entre el if y los :. Por ejemplo, se puede requerir que un número sea mayor que 5 y además menor que 15. Tenemos en realidad tres operadores usados conjuntamente, que serán evaluados por separado hasta devolver el resultado final, que será True si la condición se cumple o False de lo contrario.

a = 10
if a > 5 and a < 15:
    print("Mayor que 5 y menos que 15")

Es muy importante tener en cuenta que a diferencia de en otros lenguajes, en Python no puede haber un bloque if vacío. El siguiente código daría un SyntaxError.

if a > 5:

Por lo tanto si tenemos un if sin contenido, tal vez porque sea una tarea pendiente que estamos dejando para implementar en un futuro, es necesario hacer uso de pass para evitar el error. Realmente pass no hace nada, simplemente es para tener contento al interprete de código.

if a > 5:
    pass

Algo no demasiado recomendable pero que es posible, es poner todo el bloque que va dentro del if en la misma línea, justo a continuación de los :. Si el bloque de código no es muy largo, puede ser útil para ahorrarse alguna línea de código.

if a > 5: print("Es > 5")

Si tu bloque de código tiene más de una línea, se pueden poner también en la misma línea separándolas con ;.

if a > 5: print("Es > 5"); print("Dentro del if")

Uso de else y elif

Es posible que no solo queramos hacer algo si una determinada condición se cumple, sino que además queramos hacer algo de lo contrario. Es aquí donde entra la cláusula else. La parte del if se comporta de la manera que ya hemos explicado, con la diferencia que si esa condición no se cumple, se ejecutará el código presente dentro del else. Nótese que ambos bloque de código son excluyentes, se entra o en uno o en otro, pero nunca se ejecutarán los dos.

x = 5
if x == 5:
    print("Es 5")
else:
    print("No es 5")

Hasta ahora hemos visto como ejecutar un bloque de código si se cumple una instrucción, u otro si no se cumple, pero no es suficiente. En muchos casos, podemos tener varias condiciones diferentes y para cada una queremos un código distinto. Es aquí donde entra en juego el elif.

x = 5
if x == 5:
    print("Es 5")
elif x == 6:
    print("Es 6")
elif x == 7:
    print("Es 7")

Con la cláusula elif podemos ejecutar tantos bloques de código distintos como queramos según la condición. Traducido al lenguaje natural, sería algo así como decir: si es igual a 5 haz esto, si es igual a 6 haz lo otro, si es igual a 7 haz lo otro.

Se puede usar también de manera conjunta todo, el if con el elif y un else al final. Es muy importante notar que if y else solamente puede haber uno, mientras que elif puede haber varios.

x = 5
if x == 5:
    print("Es 5")
elif x == 6:
    print("Es 6")
elif x == 7:
    print("Es 7")
else:
    print("Es otro")

Si vienes de otros lenguajes de programación, sabrás que el switch es una forma alternativa de elif, sin embargo en Python esta cláusula no existe.

Operador ternario

El operador ternario o ternary operator es una herramienta muy potente que muchos lenguajes de programación tienen. En Python es un poco distinto a lo que sería en C, pero el concepto es el mismo. Se trata de una cláusula if, else que se define en una sola línea y puede ser usado por ejemplo, dentro de un print().

Para saber más: El operador ternario fue propuesto en la PEP 308.

x = 5
print("Es 5" if x == 5 else "No es 5")
#Es 5

Existen tres partes en un operador ternario, que son exactamente iguales a los que había en un if else. Tenemos la condición a evaluar, el código que se ejecuta si se cumple, y el código que se ejecuta si no se cumple. En este caso, tenemos los tres en la misma línea.

# [código si se cumple] if [condición] else [código si no se cumple]

Es muy útil y permite ahorrarse algunas líneas de código, además de aumentar la rapidez a la que escribimos. Si por ejemplo tenemos una variable a la que queremos asignar un valor en función de una condición, se puede hacer de la siguiente manera. Siguiendo el ejemplo anterior, en el siguiente código intentamos dividir a entre b. Si b es diferente a cero, se realiza la división y se almacena en c, de lo contrario se almacena -1. Ese -1 podría ser una forma de indicar que ha habido un error con la división.

a = 10
b = 5
c = a/b if b!=0 else -1
print(c)
#2

Ejemplos if

# Verifica si un número es par o impar
x = 6
if not x%2:
    print("Es par")
else:
    print("Es impar")
# Decrementa x en 1 unidad si es mayor que cero
x = 5
x-=1 if x>0 else x
print(x)