Artículo original escrito por Dionysia Lemonaki
Artículo original Python If Else Statement – Conditional Statements Explained
Traducido y adaptado por Andres Torres

Existen varios casos donde no necesitas que todo tu código sea ejecutado en tus programas.

En este caso, posiblemente necesites un código que se ejecute solo cuando se cumple una condición específica, y que se ejecute un conjunto de código diferente cuando la condición no esté satisfecha.

Es aquí cuando las sentencias condicionales van de la mano.

Las sentencias condicionales te permiten controlar el flujo lógico de los programas, de una manera clara y compacta.

Son ramificaciones que modifican cómo tu código es ejecutado y permiten el manejo de la toma de decisiones.

Este tutorial trata acerca de las bases de las sentencias if, if..else, y elif en el lenguaje de programación Python, usando distintos ejemplos.

Comencemos.

La sintaxis básica de la sentencia if

Una sentencia if en Python esencialmente dice:

"Si la expresión evaluada, resulta ser verdadera(True), entonces ejecuta una vez el código en la expresión. Si sucede el caso contrario y la expresión es falsa, entonces No ejecutes el código que sigue."

La sintaxis general para la sentencia if básica es como lo siguiente:

if condicion:
    ejecutar sentencia

Una sentencia if consiste en:

  • La palabra reservada if , da inicio al condicional if .
  • La siguiente parte es la condición. Esta puede evaluar si la declaración es verdadera o falsa. En Python estas son definidas por las palabras reservadas (True or False).  
  • Paréntesis (()) Los paréntesis son opcionales, no obstante, ayudan a mejorar la legibilidad del código cuando más de una condición está presente.
  • Dos puntos : cuya función es separar la condición de la declaración de ejecución siguiente.
  • Una nueva línea.
  • Un nivel de indentación de cuatro espacios, que es una convención en Python. El nivel de indentación es asociado con la estructura de la declaración que sigue.
  • Finalmente, la estructura de la sentencia. Este es el código que será ejecutado, únicamente si la sentencia a ser evaluada es verdadera. Es posible tener múltiples líneas en la estructura de código que pueden ser ejecutadas; en este caso es necesario tener cautela en cuanto a que todas las líneas tengan el mismo nivel de indentación.

Tomemos el siguiente ejemplo:

a = 1
b = 2

if b > a:
    print(" b es mayor que a")

Resultado:

b es mayor que a

En el ejemplo anterior, fueron creadas dos variables; a y b,  a las cuales se les asignaron los valores de 1 y 2, respectivamente.

La frase en la sentencia "print", permitirá a la consola imprimir la sentencia solo en caso de cumplirse la condición b > a. Puesto que esta condición fue evaluada como verdadera(True), la instrucción fue ejecutada. Si no hubiese sido verdadera (False), la instrucción no se habría ejecutado.

Es decir; si en cambio hubiésemos tenido:

a = 1
b = 2

if a > b
    print("a es mayor que b")

La consola no hubiera ejecutado la instrucción(sin importar cuál fuere) debido a que la condición a evaluar no es verdadera.

¿Cómo funcionan las sentencias if..else ?

Cómo mencionamos, una sentencia if ejecuta el código, solo en caso de cumplirse la condición especulada.

¿Pero qué sucede si queremos ejecutar el código alternativo en caso de no cumplirse las condiciones? Es en este caso que es necesario usar else.

La sintaxis de una sentencia if..else es parecida a la siguiente:

if condicion:
    ejecutar codigo si la condicion es True
else:
     ejecutar codigo si la condicion es False

Una sentencia if..else en Python significa:

"Cuando la expresión if se evalúa como True, entonces ejecuta el código que le sigue. Pero si se evalúa como False, entonces ejecuta el código que sigue después de la sentencia else ."

La sentencia else está escrito en una nueva línea, posterior a la última línea del código indentado, y no puede ser escrita por sí misma. Una sentencia else tiene como prerrequisito una sentencia if, siendo a la vez, parte de él.

El siguiente código también necesita ser indentado 4 espacios para definirlo como parte de la cláusula else.

El código posterior a la sentencia condicional else se ejecuta sí y solo sí la primera parte, del condicional if se evalúa como False. Si tu sentencia en la condicional if se evalúa como True, será ese bloque de código el que se ejecutará y el código que sigue a else no se ejecutará nunca.

a = 1
b = 2

if a < b:
    print(" b es mayor que a")
else:
    print("a es mayor que b")

Aquí, la línea de código que sigue la sentencia else, print("a es mayor que b"), nunca se ejecutará. La sentencia if anterior, a<b, se evaluó como True, por lo tanto es este el código ejecutado.

El bloque else se ejecuta cuando:

a = 1
b = 2

if a > b:
    print(" a es mayor que b")
else:
    print("b es mayor que a")

Resultado:

b es mayor que a

Sé consciente que no puedes escribir cualquier otro código en medio de if y else. Si haces esto, obtendrás un SyntaxError :

if 1 > 2:
   print("1 es mayor que 2")
print("hola mundo")
else:
   print("1 es menor que 2")

Resultado:

File "<stdin>", line 3
print("hola mundo")
^
SyntaxError: invalid syntax

¿Cómo funciona elif en Python?

¿Qué si necesitamos más de dos opciones?

En vez de decir: "Si la primera condición es verdadera, realiza esto, si no, realiza esto otro", ahora le indicamos al programa, "Si esto no es verdadero, intenta esto otro, y si todas las condiciones fallan en ser verdaderas, entonces haz esto.

elif es lo que buscamos.

La sintaxis básica es similar a la siguiente:

if primera_condicion:
    ejecutar sentencia
elif segunda_condicion:
    ejecutar sentencia
else:
    ejecutar sentencia alternativa si todas las condiciones previas son son evaluadas como False

Podemos usar más de un elif. De esta forma tenemos más condiciones y más opciones.

Por ejemplo:

x = 1

if x > 10:
    print(" x es mayor que 10!")
elif x < 10:
      print("x es menor que 10!")
elif x < 20 :
      print("x es menor que 20!")
else:
     print("x es igual a 10")

Resultado:

x es menor que 10!

En este ejemplo, if pone a prueba una condición específica, los bloques elif son dos alternativas, y el bloque final else es la solución final cuando todas las condiciones previas no se han cumplido.

Ten cuidado del orden en el que escribes las sentencias elif.

En el ejemplo anterior, si hubieras escrito:

x = 1

if x > 10:
    print(" x es mayor que 10!")
elif x < 20 :
      print("x es menor que 20!")
elif x < 10:
      print("x es menor que 10!")
else:
     print("x es igual a 10")

La sentencia "print" de x es menor que 20! se habría ejecutado porque estaba escrita antes de x es menor que 10!.

El condicional elif hace fácil el proceso de código.

Si todas las sentencias elif se evalúan como False, entonces, y solo entonces se ejecutará el último bloque de código else.

Por ejemplo, he aquí un caso en que la sentenciaelse se ejecutaría:

x = 10

if x > 10:
    print(" x es mayor que 10!")
elif x < 10:
      print("x es menor que 10!")
elif x > 20 :
      print("x es mayor que 20!")
else:
     print("x es igual a 10")

Resultado:

x es igual a 10

Conclusión

Y eso es todo!

Estos son los principios básicos de los condicionales if,if..else y elif en Python.

Dependiendo del contexto, las sentencias condicionales pueden volverse más avanzados y complejos.

Las sentencias condicionales pueden ser anidados dentro de otras sentencias condicionales, dependiendo de las características del problema que intentes resolver, y de la lógica detrás de su solución.

¡Muchas Gracias por leer y Feliz Programación!