Saltar al contenido principal

Sentencias IF, ELIF y ELSE de Python

En este tutorial, aprenderás exclusivamente sobre las sentencias if else de Python.
Actualizado 25 oct 2024  · 9 min de lectura

Sentencias IF, ELIF y ELSE de Python

Al escribir código en cualquier lenguaje, tendrás que controlar el flujo de tu programa. Esto suele ocurrir cuando hay que tomar decisiones: querrás ejecutar una determinada línea de código si se cumple una condición, y un conjunto diferente de código en caso contrario. En Python, tienes las sentenciasif, elif y else para este fin. En este tutorial, trabajarás con un ejemplo para aprender sobre la sentencia if simple y pasarás gradualmente a las sentencias if-else y luego a las sentencias if-elif-else. También aprenderás sobre la anidación y verás un ejemplo de if anidado. Empecemos....

Declaración if simple

Este es el ejemplo más sencillo de declaración condicional. La sintaxis es:

if(condition):
      indented Statement Block

El bloque de líneas con la misma sangría después de los dos puntos (:) se ejecutará siempre que la condición sea TRUE.

Sentencias IF, ELIF y ELSE de Python
Fuente: python por Programiz

Por ejemplo, supongamos que estás registrando la puntuación de un determinado curso. La puntuación total es 100, con 50 puntos para el trabajo teórico y 50 para el práctico. Quieres mostrar un mensaje de error o 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.")

Los dos puntos (:) son importantes porque separan la condición de las sentencias que se ejecutarán tras la evaluación de la condición. Esto es especialmente importante en las frases en las que sólo hay una frase y no se utiliza el corchete ( ). Por ejemplo:

score_theory = 40
score_practical = 45
if score_theory + score_practical > 100: # End of condition
    print("Invalid score. Please check the input.")

La declaración if anterior comprueba la condición "si" y determina que la declaración (40 + 45 = 85) > 100 es FALSA y, por tanto, no imprimirá la advertencia. Hagamos que la afirmación sea FALSA y veamos qué ocurre:

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 una declaración cuando la puntuación total esté realmente dentro del intervalo, es decir, sea inferior a 100. Aquí es cuando sería útil la declaración if-else.

Prueba única: Declaración if-else

La sentencia if-else se utiliza para codificar del mismo modo que la utilizarías en lengua inglesa. La sintaxis de la declaración if-else es:

if(condition):
      Indented statement block for when condition is TRUE
else:
      Indented statement block for when condition is FALSE

Sentencias IF, ELIF y ELSE de Python
Fuente: python por Programiz

Intentemos trabajar con el código de arriba y redefinir el problema: Cuando registres la puntuación de determinados trabajos de curso, debes sumar los puntos de la parte teórica y de la parte práctica para obtener la puntuación total. Si la puntuación total es inferior a 100, debes mostrar un mensaje de "Puntuación correcta", y si no lo es, una advertencia como antes.

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 sólo 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. No se trata de una norma, sino de una práctica habitual entre los programadores. Reescribiendo el código de arriba 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 50, pero el total sigue siendo inferior 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 de puntuación individual para teoría o prácticas no debe superar 50. ¿Cómo puedes representar esto en código? La respuesta: declaración if-elif-else.

Pruebas múltiples: Declaración if-elif-else de Python

Desglosemos el problema que tenemos hasta ahora e intentemos enmarcarlo en palabras antes de saltar al código.

  • Paso 1. Introduce las dos puntuaciones: score_theory y score_practical

  • Paso 2. Comprueba que ninguna de las puntuaciones supera la puntuación máxima posible, es decir, 50. Esto también resuelve el problema de que la puntuación total no supere 10. Si alguno de los dos es superior a 50 - muestra la advertencia y sal.

    • 2.1 Comprueba si score_theory
    • 2.2 Comprueba si score_practical
  • Paso 3. Si ninguno de los dos supera la puntuación, muestra un "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 seguida de la declaració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 check above fails

Sentencias IF, ELIF y ELSE de Python
Fuente: python por Programiz

De hecho, una forma elaborada de ver el efecto de la sentencia if-elif-else de Python como una simple sentencia if-else es escribirla como se indica 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'.

En realidad, la sentencia elif facilita la escritura de código. Imagina que el enunciado del problema se volviera más complejo, ¡entonces seguir la pista a cada sentencia if-else dentro de otra sentencia if podría convertirse fácilmente en una pesadilla!

Vamos a trabajar un poco más sobre el mismo ejemplo. Ahora, imagina que quisieras llevar un control de varios trabajos de curso, por ejemplo: Ciencia" e "Inglés". La puntuación total de ambos sigue siendo la misma, es decir, 100. Sin embargo, para Ciencias, el desglose entre teoría y prácticas es 50-50, pero para Inglés, el desglose es 60-40. ¿Podrías seguir utilizando los formatos anteriores?

¡SÍ! Y puedes hacerlo fácilmente con el concepto de sentencias if anidadas

Sentencias if anidadas en Python

Cuando tienes una sentencia if dentro de otra sentencia if, esto se llama anidamiento en el mundo de la programación. No tiene por qué ser siempre una simple sentencia if, sino que puedes utilizar el concepto de sentencias if, if-else e incluso if-elif-else combinadas para formar una estructura más compleja.

Vamos a codificar 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 "Science" y "science" como la misma asignatura, y lo mismo ocurre con "English" e "english". Puedes utilizar expresiones booleanas como or, y para combinar varias condiciones. Pero tienes que tener cuidado de entender la salida booleana de esas sentencias combinadas para comprender plenamente el flujo de control de tu programa.

Podemos reescribir el código anterior para comprobar las puntuaciones en la misma declaración, sin embargo, esto hace que el código sea difícil de leer y las declaraciones difíciles de depurar a veces.

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 flujo de control disponibles en Python. Has trabajado con un ejemplo en múltiples niveles para ver las variaciones de la humilde declaración if en acción. Para saber más sobre Python, consulta el curso Introducción a Python para la Ciencia de Datos de DataCamp.

Preguntas frecuentes sobre IF, ELIF y ELSE en Python

¿Qué es la sentencia if en Python?

La sentencia if se utiliza para ejecutar un bloque de código si se cumple una determinada condición.

¿Cómo se utiliza la sentencia elif en Python?

La sentencia elif (abreviatura de "else if") se utiliza para especificar condiciones adicionales que probar después de la sentencia if inicial. Si la condición de la sentencia if es falsa y la condición de la sentencia elif es verdadera, se ejecutará el bloque de código asociado a la sentencia elif.

¿Puedo tener varias sentencias elif en un solo bloque if?

Sí, puedes tener varias declaraciones elif en un solo bloque if.

¿Qué es la sentencia else en Python?

La sentencia else se utiliza para especificar un bloque de código que debe ejecutarse si no se cumple ninguna de las condiciones de las sentencias if y elif anteriores.

¿Puedo utilizar la sentencia else sin ninguna sentencia if o elif?

No, la declaración else debe utilizarse junto con una declaración if. No puede utilizarse solo.

Temas

Cursos de Python

curso

Introduction to Python

4 hr
5.8M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

tutorial

if...elif...else en el tutorial de Python

Aprende a crear sentencias if...elif...else en Python.
DataCamp Team's photo

DataCamp Team

4 min

tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

tutorial

Tutorial de list index() de Python

En este tutorial, aprenderás exclusivamente sobre la función index().
Sejal Jaiswal's photo

Sejal Jaiswal

6 min

tutorial

Tutorial de cadenas en Python

En este tutorial, aprenderás todo sobre las cadenas de Python: trocearlas y encadenarlas, manipularlas y darles formato con la clase Formatter, cadenas f, plantillas y ¡mucho más!
Sejal Jaiswal's photo

Sejal Jaiswal

16 min

tutorial

Función del guión bajo(_) en el tutorial de Python

En este tutorial, vas a aprender sobre los usos del guión bajo(_) en python.
Hafeezul Kareem Shaik's photo

Hafeezul Kareem Shaik

8 min

tutorial

Tutorial de bucles For en Python

Aprenda a implementar bucles For en Python para iterar una secuencia, o las filas y columnas de un dataframe pandas.
Aditya Sharma's photo

Aditya Sharma

5 min

See MoreSee More