Curso

Al escribir código en cualquier lenguaje, tendrás que controlar el flujo de tu programa. Esto suele ocurrir cuando hay que tomar una decisión: querrás ejecutar una determinada línea de código si se cumple una condición y otro conjunto de código si no se cumple. En Python, tienes las sentenciasif, elif y else para este propósito. En este tutorial, trabajarás con un ejemplo para aprender sobre la sencilla instrucción if y, poco a poco, pasarás a las instrucciones if-else y, a continuación, a las instrucciones if-elif-else. También aprenderás sobre la anidación y verás un ejemplo de if anidado. Empecemos...
Sentencia if simple
Este es el ejemplo más sencillo de una instrucción condicional. La sintaxis es:
if(condition):
indented Statement Block
El bloque de líneas con el mismo sangrado después de los dos puntos (:) se ejecutará siempre que la condición sea TRUE.

Por ejemplo, supongamos que estás registrando la puntuación de un curso determinado. La puntuación total es de 100, con 50 puntos para el trabajo teórico y 50 para el práctico. Quieres mostrar un mensaje de error o una advertencia si la puntuación supera 100.
score_theory = 40
score_practical = 45
if(score_theory + score_practical > 100):
print("Invalid score. Please check the input.")
# no output expected
El signo de dos puntos (:) es importante porque separa la condición de las instrucciones que se ejecutarán tras la evaluación de la condición. Esto es especialmente importante en las sentencias en las que solo hay una sentencia y no se utiliza el bracket ( ). Por ejemplo:
score_theory = 40
score_practical = 45
if score_theory + score_practical > 100: # End of condition
print("Invalid score. Please check the input.")
# no output expected
La instrucción if anterior comprueba la condición «if» y determina que la instrucción (40 + 45 = 85) es mayor que 100, por lo que es FALSE y, por lo tanto, no se imprimirá la advertencia. Hagamos que la afirmación sea VERDADERA y veamos qué pasa:
score_theory = 50
score_practical = 55
if(score_theory + score_practical > 100):
print("Invalid score. Please check the input.")
# Invalid score. Please check the input.
Supongamos que quieres ir un paso más allá y mostrar un mensaje cuando la puntuación total se encuentre dentro del rango, es decir, menos de 100. Aquí es donde la instrucción if-else sería útil.
Prueba única: instrucción if-else
La instrucción if-else se utiliza para codificar de la misma manera que se utilizaría en el idioma inglés. La sintaxis de la instrucción if-else es:
if(condition):
Indented statement block for when condition is TRUE
else:
Indented statement block for when condition is FALSE

Intentemos trabajar con el código anterior y redefinamos el problema: Al registrar la puntuación de determinados trabajos de curso, deseas sumar los puntos de la parte teórica y los de la parte práctica para obtener la puntuación total. Si la puntuación total es inferior o igual a 100, se mostrará el mensaje 'Puntuación correcta', y si no lo es, se mostrará una advertencia como la anterior.
score_theory = 40
score_practical = 45
if(score_theory + score_practical > 100):
print("Please check the input. Score exceeds total possible score.")
else:
print("Score validated. Your total is: ", score_theory + score_practical)
# Score validated. Your total is: 85
Consejo: Si solo tienes una línea de código que ejecutar en lugar de varias líneas en el código que sigue a la condición, puedes colocarlo todo en la misma línea. Esto no es una regla, sino una práctica habitual entre los programadores. Reescribiendo el código anterior con este estilo:
score_theory = 40
score_practical = 45
# Single statement: if(condition): Statement for when condition is true
if (score_theory + score_practical > 100): print("Please check the input. Score exceeds total possible score.")
# Single statement: if(condition): Statement for when condition is false
else: print("Score validated. Your total is: ", score_theory + score_practical)
# Score validated. Your total is: 85
Ahora imagina un caso en el que una de las puntuaciones supera los 50, pero el total sigue siendo inferior o igual a 100. ¿Qué crees que pasaría entonces?
score_theory = 60
score_practical = 40
if(score_theory + score_practical > 100):
print("Please check the input. Score exceeds total possible score.")
else:
print("Score validated. Your total is: ", score_theory + score_practical)
# Score validated. Your total is: 100
Esto es incorrecto, ya que sabes que el límite máximo para las puntuaciones individuales en teoría o práctica no debe superar los 50 puntos. ¿Cómo se puede representar esto en código? La respuesta: la instrucción if-elif-else.
Pruebas múltiples: Sentencia if-elif-else en Python
Analicemos el problema que tenemos hasta ahora e intentemos expresarlo con palabras antes de pasar al código.
-
Paso 1. Introduce las dos puntuaciones:
score_theoryyscore_practical -
Paso 2. Comprueba que ninguna de las puntuaciones supere la puntuación máxima posible, es decir, 50. Esto también resuelve el problema de que la puntuación total no supere los 100 puntos. Si cualquiera de los dos es mayor que 50, muestra la advertencia y sal.
- 2.1 Comprueba si hay
score_theory - 2.2 Comprueba si
score_practical
- 2.1 Comprueba si hay
-
Paso 3. Si ninguno supera la puntuación, muestra 'Puntuación correcta' y sal.
# Step 1
score_theory = 60
score_practical = 20
if(score_theory > 50):
print("Please check the input score for 'Theory'.") # Step 2.1
elif(score_practical > 50):
print("Please check the input score for 'Practical'.") # Step 2.2
else:
print("Score validated. Your total is: ", score_theory + score_practical) # Step 3
# Please check the input score for 'Theory'.
La sintaxis que sigue la instrucción if-else-if es:
if(Condition1):
Indented statement block for Condition1
elif(Condition2):
Indented statement block for Condition2
else:
Alternate statement block if all condition checks above fails

De hecho, una forma elaborada de ver el efecto de la instrucción if-elif-else de Python como una simple instrucción if-else es escribirla como se muestra a continuación:
score_theory = 60
score_practical = 20
if(score_theory > 50):
print("Please check the input score for 'Theory'.")
else:
if(score_practical > 50):
print("Please check the input score for 'Practical'.")
else:
print("Score validated. Your total is: ", score_theory + score_practical)
# Please check the input score for 'Theory'.
La instrucción elif realmente facilita la escritura de código. Imagina que la declaración del problema se vuelve más compleja, entonces llevar un programa de todas las declaraciones if-else dentro de otra declaración if podría convertirse fácilmente en una pesadilla.
Trabajemos un poco más con el mismo ejemplo. Ahora, imagina que quieres hacer un seguimiento de varios trabajos, por ejemplo: 'Ciencias' e 'Inglés'. La puntuación total para ambos sigue siendo la misma, es decir, 100. Sin embargo, en el caso de Ciencias, la distribución entre teoría y práctica es del 50-50, mientras que en Inglés es del 60-40. ¿Podrías seguir utilizando los formatos anteriores?
¡SÍ! Y puedes hacerlo fácilmente con el concepto de sentencias if anidadas.
Sentences if anidadas en Python
Cuando tienes una instrucción if dentro de otra instrucción if, en el mundo de la programación se denomina anidamiento. No siempre tiene que ser una simple instrucción if, sino que puedes utilizar el concepto de instrucciones if, if-else e incluso if-elif-else combinadas para formar una estructura más compleja.
Codifiquemos el ejemplo anterior:
coursework = "English"
score_theory = 53
score_practical = 35
if(coursework == "Science" or coursework == "science"):
if(score_theory > 50):
print("Please check the input score for 'Science: Theory'.")
elif(score_practical > 50):
print("Please check the input score for 'Science: Practical'.")
else:
print("Score validated for Science. Your total is: ", score_theory + score_practical)
elif(coursework == "English" or coursework == "english"):
if(score_theory > 60):
print("Please check the input score for 'English: Theory'.")
elif(score_practical > 40):
print("Please check the input score for 'English: Practical'.")
else:
print("Score validated for English. Your total is: ", score_theory + score_practical)
else: print("Coursework not recognised. Please enter score for either Science or English.")
# Score validated for English. Your total is: 88
¿Te has fijado en el uso de or en el código anterior? Se utiliza para evaluar 'Ciencias' y 'ciencias' como la misma asignatura, y lo mismo ocurre con 'Inglés' e 'inglés'. Puedes utilizar operadores booleanos como or y and para combinar varias condiciones. Pero debes tener cuidado de comprender la salida booleana de tales sentencias combinadas para comprender completamente el flujo de control de tu programa.
Podemos reescribir el código anterior para comprobar las puntuaciones en la misma instrucción, sin embargo, esto hace que el código sea difícil de leer y que las instrucciones sean difíciles de depurar en ocasiones.
coursework = "English"
score_theory = 53
score_practical = 78
if(coursework == "Science" or coursework == "science"):
if(score_theory > 50 or score_practical > 50):
# Can't distinguish the error in Science: theory or Science: Practical
print("Please check the input score for Science.")
else: print("Score validated for Science. Your total is: ", score_theory + score_practical)
elif(coursework == "English" or coursework == "english"):
if(score_theory > 60 or score_practical > 40):
# Can't distinguish the error in English: theory or English: Practical
print("Please check the input score for English.")
else: print("Score validated for English. Your total is: ", score_theory + score_practical)
else: print("Coursework not recognised. Please enter score for either Science or English.")
# Please check the input score for English.
¡Voilà!
En este tutorial, has abordado uno de los principales mecanismos de control de flujo disponibles en Python. Has trabajado con un ejemplo en varios niveles para ver las variaciones de la humilde instrucción if en acción. Para obtener más información sobre Python, consulta el curso Introducción a Python para la ciencia de datos de DataCamp.
Preguntas frecuentes sobre Python IF, ELIF y ELSE
¿Qué es la instrucción if en Python?
La instrucción « if » se utiliza para ejecutar un bloque de código si se cumple una determinada condición.
¿Cómo se utiliza la instrucción elif en Python?
La instrucción « elif » (abreviatura de «else if») se utiliza para especificar condiciones adicionales que se deben comprobar después de la instrucción «if» inicial. Si la condición de la instrucción « if » es falsa y la condición de la instrucción « elif » es verdadera, se ejecutará el bloque de código asociado a la instrucción «elif».
¿Puedo tener varias sentencias elif en un solo bloque if?
Sí, puedes tener varias sentencias « elif » en un único bloque « if ».
¿Qué es la instrucción else en Python?
La instrucción « else » se utiliza para especificar un bloque de código que debe ejecutarse si ninguna de las condiciones de las instrucciones « if » y « elif » anteriores es verdadera.
¿Puedo usar la instrucción else sin ninguna instrucción if o elif?
No, la instrucción « else » debe utilizarse junto con una instrucción « if ». No se puede utilizar solo.