Sentencias Condicionales en Python

PythonBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a controlar el flujo de sus programas de Python utilizando sentencias condicionales. Comenzaremos comprendiendo el concepto de ejecución secuencial de programas e introduciremos la lógica condicional, que permite a los programas tomar decisiones.

Implementará lógica de rama única y doble utilizando las sentencias if y if-else, y explorará la lógica de múltiples ramas con if-elif-else. El laboratorio también cubrirá sentencias if anidadas, la sentencia pass e introducirá la sentencia match-case disponible en Python 3.10 y versiones posteriores. Al final de este laboratorio, podrá escribir código Python que ejecute diferentes bloques de instrucciones basándose en condiciones específicas.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Comprender el Flujo Secuencial e Introducir la Lógica Condicional

En este paso, exploraremos el concepto de flujo secuencial en la programación e introduciremos la lógica condicional, que permite a los programas tomar decisiones.

El flujo secuencial es el tipo más básico de ejecución de programas. Las instrucciones se ejecutan una tras otra, de arriba abajo.

El entorno de laboratorio ya ha creado un archivo llamado sequential.py para usted en el directorio ~/project. Localice este archivo en el explorador de archivos del WebIDE en el panel izquierdo y ábralo.

Agregue el siguiente código a sequential.py:

print("First instruction")
print("Second instruction")
print("Third instruction")

Guarde el archivo. Para ejecutar el script, abra la terminal integrada en el WebIDE y ejecute el siguiente comando:

python ~/project/sequential.py

Verá la salida impresa en el orden exacto en que aparecen las sentencias print en el script:

First instruction
Second instruction
Third instruction

Esto demuestra el flujo secuencial. Sin embargo, los programas a menudo necesitan comportarse de manera diferente según ciertas condiciones. Aquí es donde entra la lógica condicional. La sentencia condicional más fundamental en Python es la sentencia if, que ejecuta un bloque de código solo si una condición especificada es verdadera.

La sintaxis básica de una sentencia if es:

if condition:
    ## Code to execute if the condition is true
    ## This block must be indented

Ahora, reemplace el contenido de sequential.py con el siguiente código para incluir una sentencia if:

x = 10

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Guarde el archivo y ejecútelo de nuevo:

python ~/project/sequential.py

La salida será:

Before the if statement
x is greater than 5
After the if statement

La condición x > 5 es verdadera, por lo que se ejecuta el bloque de código indentado dentro de la sentencia if.

Ahora, veamos qué sucede cuando la condición es falsa. Modifique sequential.py cambiando el valor de x a 3:

x = 3

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Guarde el archivo y ejecútelo:

python ~/project/sequential.py

La salida será:

Before the if statement
After the if statement

Esta vez, la condición x > 5 es falsa, por lo que el bloque de código dentro de la sentencia if se omite. Este simple ejemplo ilustra cómo la sentencia if introduce la toma de decisiones en nuestros programas.

Implementar Lógica de Rama Única y Doble con if e if-else

En este paso, nos centraremos en implementar lógica de rama única y doble utilizando las sentencias if y if-else.

La sentencia if permite la ejecución de una única rama. Utilizaremos el archivo branching.py que ha sido preparado para usted. Abra branching.py desde el explorador de archivos.

Agregue el siguiente código para demostrar una sentencia if de rama única:

score = 85

if score >= 70:
    print("Congratulations! You passed.")

print("End of program.")

Guarde el archivo y ejecútelo desde la terminal:

python ~/project/branching.py

La salida será:

Congratulations! You passed.
End of program.

Dado que score es 85, la condición es verdadera y se imprime el mensaje de felicitación.

Aunque if es útil, a menudo necesitamos ejecutar un bloque de código diferente cuando la condición es falsa. Aquí es donde entra en juego la sentencia if-else, que proporciona lógica de doble rama.

La sintaxis de una sentencia if-else es:

if condition:
    ## Code to execute if the condition is true
else:
    ## Code to execute if the condition is false

Modifiquemos branching.py para usar una sentencia if-else. Reemplace el contenido actual con lo siguiente:

score = 85

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Guarde y ejecute el script. Con score como 85, se ejecuta el bloque if:

Congratulations! You passed.
End of program.

Ahora, para probar el bloque else, modifique score a 65 en branching.py:

score = 65

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Guarde el archivo y ejecútelo de nuevo:

python ~/project/branching.py

La salida ahora será:

Keep trying. You can do better.
End of program.

Dado que score es 65, la condición if es falsa y se ejecuta el código en el bloque else. La sentencia if-else es esencial para manejar dos resultados posibles.

Implementar Lógica de Múltiples Ramas con if-elif-else

En este paso, aprenderemos a manejar situaciones con más de dos resultados posibles utilizando la sentencia if-elif-else, que proporciona lógica de múltiples ramas.

La estructura if-elif-else comprueba las condiciones secuencialmente. Si la condición if es falsa, comprueba la primera condición elif (abreviatura de "else if"), y así sucesivamente. Si ninguna condición es verdadera, se ejecuta el bloque else.

La sintaxis básica es:

if condition1:
    ## Executes if condition1 is true
elif condition2:
    ## Executes if condition1 is false and condition2 is true
else:
    ## Executes if all previous conditions are false

Abra el archivo multibranch.py en el WebIDE. Escribiremos un script para determinar una calificación literal basada en una puntuación numérica. Agregue el siguiente código:

score = 88

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Guarde el archivo y ejecútelo desde la terminal:

python ~/project/multibranch.py

La salida será:

Grade: B
Grading complete.

El programa comprueba score >= 90 (falso), luego score >= 80 (verdadero), imprime "Grade: B" y omite el resto de la cadena.

Ahora, probemos el bloque else. Modifique multibranch.py para establecer la puntuación en 55:

score = 55

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Guarde y ejecute el script:

python ~/project/multibranch.py

La salida será:

Grade: F
Grading complete.

Finalmente, para prepararnos para la verificación, cambie la puntuación a 75 en multibranch.py:

score = 75

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Guarde y ejecute el script por última vez:

python ~/project/multibranch.py

La salida será:

Grade: C
Grading complete.

La estructura if-elif-else es potente para manejar múltiples casos distintos. Recuerde que solo se ejecuta el bloque de código correspondiente a la primera condición verdadera.

Explorar Sentencias if Anidadas y la Sentencia pass

En este paso, exploraremos las sentencias if anidadas, donde una sentencia if se coloca dentro de otra, y también aprenderemos sobre la sentencia pass.

Las sentencias if anidadas son útiles cuando necesitas verificar una condición, y si es verdadera, verificar otra subcondición.

Abra el archivo nested_if.py en el WebIDE. Agregue el siguiente código, que verifica la elegibilidad para votar basándose en la edad y la ciudadanía.

age = 20
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are also a citizen.")
        print("You are eligible to vote.")
    else:
        print("You are not a citizen.")
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Guarde el archivo y ejecútelo:

python ~/project/nested_if.py

La salida será:

You are old enough to vote.
You are also a citizen.
You are eligible to vote.
Voting eligibility check complete.

Tanto la condición externa (age >= 18) como la condición interna (is_citizen) son verdaderas.

Ahora, veamos la sentencia pass. La sentencia pass es una operación nula; no sucede nada cuando se ejecuta. Es un marcador de posición útil cuando sintácticamente se requiere una sentencia, pero aún no ha escrito el código para ella.

Reemplace el contenido de nested_if.py con este ejemplo que usa pass:

age = 18

if age >= 18:
    pass ## Placeholder for future code
else:
    print("You are not old enough to vote.")

print("Check complete.")

Guarde y ejecute el script:

python ~/project/nested_if.py

La salida será:

Check complete.

La condición if es verdadera, por lo que se ejecuta la sentencia pass (sin hacer nada), y el bloque else se omite.

Finalmente, para prepararnos para la verificación, modifique nested_if.py para usar la lógica original pero con una edad que no cumpla la primera comprobación.

age = 16
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are eligible to vote.")
    else:
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Guarde y ejecute el script:

python ~/project/nested_if.py

La salida será:

You are not old enough to vote.
You are not eligible to vote.
Voting eligibility check complete.

Aquí, la condición externa if (age >= 18) es falsa, por lo que se ejecuta el bloque else externo, y la estructura interna if-else se omite por completo.

Introducir la Sentencia match-case (Python 3.10+)

En este paso, exploraremos la sentencia match-case, una característica introducida en Python 3.10 para la coincidencia de patrones estructurales (structural pattern matching). Proporciona una alternativa legible a las cadenas if-elif-else para ciertos escenarios.

La sentencia match-case compara un valor contra una serie de patrones y ejecuta el bloque de código para el primer patrón que coincida.

La sintaxis básica es:

match value:
    case pattern1:
        ## Code for pattern1
    case pattern2:
        ## Code for pattern2
    case _:
        ## Code for no match (wildcard)

Abra el archivo match_case.py en el WebIDE. Agregue el siguiente código para imprimir el día de la semana basado en un número.

day_number = 3

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Guarde el archivo y ejecútelo. El comando python en este entorno utiliza por defecto una versión compatible.

python ~/project/match_case.py

La salida será:

Wednesday
Day check complete.

El valor 3 coincide con case 3:, por lo que se imprime "Wednesday".

Ahora, probemos el caso comodín (wildcard). Modifique match_case.py para usar un número no válido:

day_number = 10

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Guarde y ejecute el script:

python ~/project/match_case.py

La salida será:

Invalid day number
Day check complete.

Dado que 10 no coincide con ningún caso específico, se coincide con el comodín case _:.

Finalmente, para prepararnos para la verificación, cambie day_number a 6 en match_case.py:

day_number = 6

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Guarde y ejecute el script por última vez:

python ~/project/match_case.py

La salida será:

Saturday
Day check complete.

La sentencia match-case puede ser una forma más limpia de manejar múltiples valores específicos en comparación con una larga cadena if-elif-else.

Resumen

En este laboratorio, aprendió a controlar el flujo de sus programas Python. Comenzó con el flujo secuencial del programa y luego pasó a la lógica condicional. Implementó lógica de rama única con if, lógica de doble rama con if-else y lógica de múltiples ramas con if-elif-else. También exploró cómo crear estructuras de decisión más complejas con sentencias if anidadas y cómo usar la sentencia pass como marcador de posición de código. Finalmente, se le presentó la sentencia match-case como una alternativa moderna para la ramificación basada en patrones. Ahora está equipado para escribir programas Python que pueden tomar decisiones y ejecutar diferentes rutas de código basadas en condiciones específicas.