Estructuras de control de Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, explorarás las estructuras de control fundamentales de Python: las declaraciones condicionales y los bucles. A partir de los conocimientos adquiridos en laboratorios anteriores, aprenderás a controlar el flujo de tus programas utilizando declaraciones if-else, bucles for y bucles while. Esta experiencia práctica profundizará tu comprensión de los conceptos básicos de Python y te preparará para escribir programas más complejos y dinámicos.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/ControlFlowGroup -.-> python/break_continue("Break and Continue") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") subgraph Lab Skills python/python_shell -.-> lab-393123{{"Estructuras de control de Python"}} python/conditional_statements -.-> lab-393123{{"Estructuras de control de Python"}} python/for_loops -.-> lab-393123{{"Estructuras de control de Python"}} python/while_loops -.-> lab-393123{{"Estructuras de control de Python"}} python/break_continue -.-> lab-393123{{"Estructuras de control de Python"}} python/function_definition -.-> lab-393123{{"Estructuras de control de Python"}} python/file_operations -.-> lab-393123{{"Estructuras de control de Python"}} end

Comprendiendo las Declaraciones Condicionales

En este paso, aprenderás sobre las declaraciones condicionales en Python, específicamente la estructura if-else.

  1. Abre el intérprete de Python escribiendo el siguiente comando en tu terminal:

    python

    Deberías ver el indicador de Python (>>>), lo que indica que ahora estás en la shell interactiva de Python.

Python Interpreter
  1. Comencemos con una declaración if simple. En el intérprete de Python, escribe lo siguiente:

    >>> age = 20
    >>> if age >= 18:
    ...     print("You are an adult.")
    ...
    You are an adult.

    Consejo 1: Ten cuidado con la indentación, es importante en Python. Se recomienda utilizar cuatro espacios para la indentación.

    Consejo 2: El indicador >>> indica el inicio de una nueva línea, y el indicador ... indica la continuación de la línea anterior. No debes escribir estos indicadores; son mostrados automáticamente por el intérprete de Python.

    Consejo 3: Puedes presionar la tecla Enter para pasar a la siguiente línea o continuar escribiendo el código en la misma línea. Presiona Enter dos veces para ejecutar el código.

    La declaración if verifica si la condición age >= 18 es verdadera. Si lo es, se ejecuta el bloque de código indentado.

  2. Ahora, agreguemos una cláusula else:

    >>> age = 15
    >>> if age >= 18:
    ...     print("You are an adult.")
    ... else:
    ...     print("You are a minor.")
    ...
    You are a minor.

    La cláusula else proporciona una acción alternativa cuando la condición es falsa.

  3. Para condiciones más complejas, podemos utilizar cláusulas elif (else if):

    >>> age = 65
    >>> if age < 13:
    ...     print("You are a child.")
    ... elif age < 20:
    ...     print("You are a teenager.")
    ... elif age < 65:
    ...     print("You are an adult.")
    ... else:
    ...     print("You are a senior citizen.")
    ...
    You are a senior citizen.

    Las cláusulas elif te permiten verificar múltiples condiciones en secuencia.

Recuerda, la indentación es crucial en Python. Define los bloques de código asociados a cada condición.

Explorando los Bucles For

En este paso, aprenderás sobre los bucles for, que se utilizan para iterar sobre secuencias (como listas, cadenas o rangos) en Python.

  1. Comencemos con un bucle for simple utilizando un rango. En el intérprete de Python, escribe:

    >>> for i in range(5):
    ...     print(i)
    ...
    0
    1
    2
    3
    4

    La función range(5) genera una secuencia de números del 0 al 4, y el bucle itera sobre cada número.

  2. range() puede tomar múltiples argumentos para especificar los valores de inicio, fin y paso. Probemos un rango diferente:

    >>> for i in range(1, 10, 2):
    ...     print(i)
    ...
    1
    3
    5
    7
    9
    • La función range(1, 10, 2) genera una secuencia de números que comienza en 1, llega hasta (pero sin incluir) 10, con un paso de 2.
  3. Ahora, iteremos sobre una lista:

    >>> fruits = ["apple", "banana", "cherry"]
    >>> for fruit in fruits:
    ...     print(f"I like {fruit}")
    ...
    I like apple
    I like banana
    I like cherry

    Aquí, el bucle itera sobre cada elemento de la lista fruits.

  4. También puedes usar bucles for con cadenas:

    >>> for char in "Python":
    ...     print(char.upper())
    ...
    P
    Y
    T
    H
    O
    N

    Este bucle itera sobre cada carácter de la cadena "Python".

  5. Combinemos un bucle for con declaraciones condicionales:

    >>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> for num in numbers:
    ...     if num % 2 == 0:
    ...         print(f"{num} is even")
    ...     else:
    ...         print(f"{num} is odd")
    ...
    1 is odd
    2 is even
    3 is odd
    4 is even
    5 is odd
    6 is even
    7 is odd
    8 is even
    9 is odd
    10 is even

    Este bucle comprueba cada número de la lista e imprime si es par o impar.

Comprendiendo los Bucles While

En este paso, aprenderás sobre los bucles while, que se utilizan para repetir un bloque de código mientras una condición sea verdadera.

  1. Comencemos con un bucle while simple. En el intérprete de Python, escribe:

    >>> count = 0
    >>> while count < 5:
    ...     print(count)
    ...     count += 1
    ...
    0
    1
    2
    3
    4

    Este bucle continúa ejecutándose mientras count sea menor que 5.

  2. Los bucles while se utilizan a menudo cuando no sabes de antemano cuántas veces necesitas iterar. Aquí tienes un ejemplo:

    >>> import random
    >>> number = random.randint(1, 10)
    >>> guess = 0
    >>> while guess!= number:
    ...     guess = int(input("Guess a number between 1 and 10: "))
    ...     if guess < number:
    ...         print("Too low!")
    ...     elif guess > number:
    ...         print("Too high!")
    ... print(f"Congratulations! You guessed the number {number}!")

    Esto crea un sencillo juego de adivinanza en el que el usuario sigue adivinando hasta que adivina el número correcto.

  3. Ten cuidado con los bucles while: si la condición nunca se vuelve falsa, crearás un bucle infinito. Veamos un ejemplo (pero no lo ejecutes realmente):

    >>> while True:
    ...     print("This will print forever!")

    Si accidentalmente ejecutas un bucle infinito, puedes detenerlo presionando Ctrl+C.

  4. Puedes usar una declaración break para salir de un bucle prematuramente:

    >>> count = 0
    >>> while True:
    ...     print(count)
    ...     count += 1
    ...     if count >= 5:
    ...         break
    ...
    0
    1
    2
    3
    4

    Este bucle normalmente se ejecutaría para siempre, pero la declaración break lo hace salir cuando count alcanza 5.

Bucles Anidados y Declaraciones de Control de Bucles

En este paso, aprenderás sobre los bucles anidados y declaraciones adicionales de control de bucles.

  1. Los bucles anidados son bucles dentro de otros bucles. Aquí tienes un ejemplo de bucles for anidados:

    >>> for i in range(3):
    ...     for j in range(2):
    ...         print(f"i: {i}, j: {j}")
    ...
    i: 0, j: 0
    i: 0, j: 1
    i: 1, j: 0
    i: 1, j: 1
    i: 2, j: 0
    i: 2, j: 1

    El bucle interno completa todas sus iteraciones para cada iteración del bucle externo.

  2. Además de break, Python proporciona la declaración continue, que omite el resto de la iteración actual y pasa a la siguiente:

    >>> for num in range(10):
    ...     if num % 2 == 0:
    ...         continue
    ...     print(num)
    ...
    1
    3
    5
    7
    9

    Este bucle solo imprime números impares, omitiendo los pares.

  3. Puedes usar cláusulas else con bucles. El bloque else se ejecuta si el bucle se completa normalmente (sin encontrar un break):

    >>> for num in range(2, 10):
    ...     for i in range(2, num):
    ...         if num % i == 0:
    ...             print(f"{num} is not prime")
    ...             break
    ...     else:
    ...         print(f"{num} is prime")
    ...
    2 is prime
    3 is prime
    4 is not prime
    5 is prime
    6 is not prime
    7 is prime
    8 is not prime
    9 is not prime

    Este bucle anidado comprueba números primos. La cláusula else se ejecuta cuando un número es primo.

Poniendo Todo en Práctica

En este último paso, crearás un programa sencillo que utilice las estructuras de control que has aprendido en este laboratorio.

  1. Sal del intérprete de Python escribiendo exit() o presionando Ctrl+D.

  2. Abre el WebIDE en el entorno de la máquina virtual (VM) de LabEx.

WebIDE LabEx VM interface
  1. Crea un nuevo archivo llamado number_analyzer.py en el directorio ~/project utilizando el siguiente comando:

    touch ~/project/number_analyzer.py
  2. Abre el archivo recién creado en el editor del WebIDE.

  3. Copia y pega el siguiente código en el archivo:

    def analyze_numbers():
        numbers = []
        while True:
            user_input = input("Enter a number (or 'done' to finish): ")
            if user_input.lower() == 'done':
                break
            try:
                number = float(user_input)
                numbers.append(number)
            except ValueError:
                print("Invalid input. Please enter a number or 'done'.")
    
        if not numbers:
            print("No numbers entered.")
            return
    
        total = sum(numbers)
        average = total / len(numbers)
        maximum = max(numbers)
        minimum = min(numbers)
    
        print(f"\nAnalysis of {len(numbers)} numbers:")
        print(f"Total: {total}")
        print(f"Average: {average:.2f}")
        print(f"Maximum: {maximum}")
        print(f"Minimum: {minimum}")
    
        print("\nNumber distribution:")
        for num in numbers:
            if num < average:
                print(f"{num} is below average")
            elif num > average:
                print(f"{num} is above average")
            else:
                print(f"{num} is equal to average")
    
    if __name__ == "__main__":
        analyze_numbers()

    Este programa demuestra el uso de bucles while, bucles for, declaraciones condicionales y manejo de excepciones.

  4. Guarda el archivo (la opción de guardado automático está habilitada) y ejecútalo utilizando el siguiente comando en la terminal:

    python ~/project/number_analyzer.py
  5. Ingresa algunos números cuando se te solicite y luego escribe 'done' para ver el análisis. Deberías ver una salida similar a esta:

    Enter a number (or 'done' to finish): 10
    Enter a number (or 'done' to finish): 20
    Enter a number (or 'done' to finish): 30
    Enter a number (or 'done' to finish): 40
    Enter a number (or 'done' to finish): done
    
    Analysis of 4 numbers:
    Total: 100.0
    Average: 25.00
    Maximum: 40.0
    Minimum: 10.0
    
    Number distribution:
    10.0 is below average
    20.0 is below average
    30.0 is above average
    40.0 is above average

Si cometemos un error al ingresar los datos, puedes volver a ejecutar el programa. Esta es una buena oportunidad para practicar la ejecución de scripts de Python varias veces con diferentes entradas.

Resumen

En este laboratorio, has explorado las estructuras de control fundamentales de Python: declaraciones condicionales (if-else), bucles for y bucles while. Has aprendido cómo controlar el flujo de tus programas, tomar decisiones basadas en condiciones e iterar sobre secuencias de datos. También has practicado el uso de bucles anidados y declaraciones de control de bucles como break y continue.

Estas estructuras de control son la base de la programación en Python, lo que te permite crear programas más complejos y dinámicos. Has visto cómo se pueden combinar estos conceptos para crear un programa útil que analiza un conjunto de números ingresados por el usuario.

A medida que continúes tu viaje en Python, encontrarás que estas estructuras de control son esenciales para resolver una amplia variedad de problemas de programación. Recuerda practicar estos conceptos regularmente, experimentando con diferentes combinaciones y casos de uso para reforzar tu comprensión.