Saltar a contenido

Ejercitación introductoria
Estructuras repetitivas de control de flujo

  1. Escribe un programa que solicite al usuario un número entero positivo.
    El programa debe controlar que el número ingresado sea positivo. Y repetir la solicitud hasta que el usuario ingrese un número positivo.
    Recuerda pensar en la experiencia de usuario. El usuario no conoce el programa. No lo escribió. No sabe como se comporta.

    En este caso: ¿Qué estructura repetitiva debes implementar?

    Para este caso, debes implementar una estructura repetitiva de control de flujo while para solicitar al usuario un número entero positivo.

    Es un ciclo abierto. No se conoce la cantidad de iteraciones o repeticiones. El ciclo se repite hasta que el usuario ingrese un número positivo. Es decir que la estructura repetitiva debe volver a solicitar un número entero positivo si el número ingresado no es positivo, y repetir hasta que el usuario ingrese un número positivo.

    Haz clic aquí para ver la solución propuesta
    Python
    # Solicita al usuario un número entero positivo y lo almacena en una variable
    numero = int(input("Ingrese un número entero positivo: ")) # int() convierte el valor ingresado a un número entero
    
    # Estructura repetitiva de control de flujo que vuelve a solicitar un número entero positivo si el número ingresado no es positivo, y repite hasta que el usuario ingrese un número positivo
    while numero <= 0:
    
        # Muestra un mensaje de error si el número ingresado no es positivo
        print("El número ingresado no es positivo. Intente nuevamente.")
    
        # Solicita al usuario un número entero positivo y lo almacena en la variable
        numero = int(input("Ingrese un número entero positivo: ")) # int() convierte el valor ingresado a un número entero
    
    print("El número que ha ingresado es:", numero, "y es positivo.")
    
    Terminal (Entrada/Salida)
    
    
    Terminal (Entrada/Salida)
    
    
    Terminal (Entrada/Salida)
    1
    2
    3
    4
    5
    6
    7
    Ingrese un número entero positivo: -5
    El número ingresado no es positivo. Intente nuevamente.
    Ingrese un número entero positivo: 0
    El número ingresado no es positivo. Intente nuevamente.
    Ingrese un número entero positivo: 5
    El número que ha ingresado es: 5 y es positivo.
    _
    

    Se utiliza la función input() para solicitar al usuario un número entero positivo. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero positivo: ".

    El valor ingresado por el usuario es devuelto como cadena por la función input() por lo que se convierte a un número entero y se almacena en la variable numero. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura repetitiva de control de flujo while para solicitar un número entero positivo. La condición de la estructura repetitiva es que el número ingresado sea menor o igual a 0. Mientras la condición sea verdadera, se muestra un mensaje de error en la salida estándar y se solicita al usuario un número entero positivo. Luego, se almacena en la variable numero.

    La salida en la Terminal (Entrada/Salida) es "El número ingresado no es positivo. Intente nuevamente." si el número ingresado es menor o igual a 0. Si el número ingresado es positivo, se imprime en pantalla el mensaje "El número que ha ingresado es:" seguido del número ingresado y la cadena de caracteres "y es positivo.".

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.


  2. Escribe un programa que solicite números enteros hasta que se ingrese el 0. Al finalizar, el programa deberá indicar:

    1. ¿Cuántos números fueron ingresados?
    2. ¿Cuántos números fueron positivos?
    3. ¿Cuántos números fueron negativos?
    En este caso: ¿Qué estructura repetitiva debes implementar?

    Para este caso, debes implementar una estructura repetitiva de control de flujo while para solicitar al usuario números enteros hasta que se ingrese el número 0.
    El 0 no debe contabilizarse.

    Es un ciclo abierto. No se conoce la cantidad de iteraciones o repeticiones. El ciclo se repite hasta que el usuario ingrese el número 0. Es decir que la estructura repetitiva debe volver a solicitar un número entero si el número ingresado no es 0, y repetir hasta que el usuario ingrese el número 0.

    Haz clic aquí para ver la solución propuesta
    Python
    # Inicializa las variables contadoras
    cantidad_numeros = 0
    cantidad_positivos = 0
    cantidad_negativos = 0
    
    # Estructura repetitiva de control de flujo que solicita números enteros hasta que se ingrese el número 0
    
    # Ciclo infinito que se rompe cuando se ingresa el número 0. Se debe utilizar un break para salir del ciclo.
    while True: 
    
        # Solicita al usuario un número entero y lo almacena en una variable
        numero = int(input("Ingrese un número entero (0 para finalizar): ")) # int() convierte el valor ingresado a un número entero
    
        # Verifica si el número ingresado es positivo
        if numero > 0:
            # Incrementa la cantidad de números positivos
            cantidad_positivos += 1 # Equivale a cantidad_positivos = cantidad_positivos + 1
    
        # Verifica si el número ingresado es negativo
        elif numero < 0:
            # Incrementa la cantidad de números negativos
            cantidad_negativos += 1 # Equivale a cantidad_negativos = cantidad_negativos + 1
    
        # Verifica si el número ingresado es 0
        else # Equivale, en este caso, a if numero == 0:
            break
    
        # Incrementa la cantidad de números ingresados
        cantidad_numeros += 1 # Equivale a cantidad_numeros = cantidad_numeros + 1
    
    # Imprime en pantalla la cantidad de números ingresados, positivos y negativos
    print("Cantidad de números ingresados:", cantidad_numeros)
    print("Cantidad de números positivos:", cantidad_positivos)
    print("Cantidad de números negativos:", cantidad_negativos)
    
    Terminal (Entrada/Salida)
    1
    2
    3
    4
    5
    6
    7
    Ingrese un número entero (0 para finalizar): 5
    Ingrese un número entero (0 para finalizar): -3
    Ingrese un número entero (0 para finalizar): 0
    Cantidad de números ingresados: 2
    Cantidad de números positivos: 1
    Cantidad de números negativos: 1
    _
    

    Se inicializan las variables contadoras cantidad_numeros, cantidad_positivos y cantidad_negativos en 0.

    Se utiliza una estructura repetitiva de control de flujo while para solicitar al usuario números enteros hasta que se ingrese el número 0. Se utiliza un ciclo infinito que se rompe cuando se ingresa el número 0. Para salir del ciclo, se utiliza la instrucción break.

    Se utiliza la función input() para solicitar al usuario un número entero. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero (0 para finalizar): ".

    El valor ingresado por el usuario es devuelto como cadena por la función input() por lo que se convierte a un número entero y se almacena en la variable numero. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura condicional simple if… elif para verificar si el número ingresado es positivo o negativo. Si el número ingresado es positivo, se incrementa la cantidad de números positivos. Si el número ingresado es negativo, se incrementa la cantidad de números negativos. Si el número ingresado es 0, se rompe el ciclo con la instrucción break.

    Se incrementa la cantidad de números ingresados en 1 en cada iteración del ciclo.

    La salida en la Terminal (Entrada/Salida) es "Cantidad de números ingresados: 2", "Cantidad de números positivos: 1" y "Cantidad de números negativos: 1", ya que se ingresaron los números 5 y -3, que son positivo y negativo respectivamente. El número 0 no se contabiliza.

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.


  3. Escribe un programa que solicite un número entero positivo, entre 5 y 10. Luego, que imprima los números enteros desde el 0 hasta el número ingresado.

    En este caso, asumiremos que el usuario no se va a equivocar en el ingreso de datos. Es decir, no es necesario controlar que el número ingresado sea positivo, ni que esté entre 5 y 10.

    En este caso: ¿Qué estructura repetitiva debes implementar?

    Para este caso, debes implementar una estructura repetitiva de control de flujo for para imprimir los números enteros desde el 0 hasta el número ingresado por el usuario.

    Es un ciclo cerrado. Se conoce la cantidad de iteraciones o repeticiones. El ciclo se repite desde 0 hasta el número ingresado por el usuario.

    ¡Para recordar!

    Generalmente se utiliza la función range() para generar una secuencia de números enteros.

    Posee 3 parámetros: range(vi, vf, p), donde: - vi es el valor inicial del rango, - vf es el valor final del rango, y - p es el paso (incremento/decremento al próximo valor válido del rango).

    Asi, la sintaxis de range(vi, vf, p) genera una secuencia de números desde vi incluido hasta el último valor anterior a vf , con un paso p.

    Se puede omitir el paso: Para range(vi, vf) si no se especifica p, el valor por defecto es 1.

    También se puede omitir el valor inicial y el paso: Para range(vf) si no se especifica vi, el valor por defecto es 0; y si no se especifica p, el valor por defecto es 1.

    Recuerda que vi se incluye en el rango mientras que vf no (es el primer valor falso, fuera del rango entre vi inclusive y vf no inclusive).

    Haz clic aquí para ver la solución propuesta
    Python
    1
    2
    3
    4
    5
    6
    7
    8
    # Solicita al usuario un número entero positivo entre 5 y 10 y lo almacena en una variable
    # int() convierte el valor ingresado a un número entero
    numero = int(input("Ingrese un número entero positivo entre 5 y 10: "))
    
    # Estructura repetitiva de control de flujo para imprimir los números enteros desde el 0 hasta el número ingresado
    for i in range(numero + 1): # numero + 1 es para incluir el número ingresado. 
    
        print(i)
    
    Terminal (Entrada/Salida)
    Ingrese un número entero positivo entre 5 y 10: 7
    0
    1
    2
    3
    4
    5
    6
    7
    _
    

    Se utiliza la función input() para solicitar al usuario un número entero positivo entre 5 y 10. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero positivo entre 5 y 10: ".

    El valor ingresado por el usuario es devuelto como cadena por la función input() por lo que se convierte a un número entero y se almacena en la variable numero. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura repetitiva de control de flujo for para imprimir los números enteros desde el 0 hasta el número ingresado. La variable i recorre un rango de valores desde 0 hasta el número ingresado más 1. En cada iteración, se imprime en pantalla el valor de i.

    La salida en la Terminal (Entrada/Salida) es 0, 1, 2, 3, 4, 5, 6 y 7, ya que se ingresó el número 7.

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.


  4. Escribe un programa que solicite un número entero entre 1 y 10. Luego, que solicite otro número entero entre 15 y 20. A continuación, que imprima los números enteros desde el primer número ingresado hasta el segundo número ingresado.

    En este caso, asumiremos que el usuario no se va a equivocar en el ingreso de datos. Es decir, no es necesario controlar que los números ingresados estén en el rango solicitado.

    En este caso: ¿Qué estructura repetitiva debes implementar?

    Para este caso, debes implementar una estructura repetitiva de control de flujo for para imprimir los números enteros desde el primer número ingresado hasta el segundo número ingresado por el usuario.

    Es un ciclo cerrado. Se conoce la cantidad de iteraciones o repeticiones. El ciclo se repite desde el primer número ingresado hasta el segundo número ingresado.

    Haz clic aquí para ver la solución propuesta
    Python
    # Solicita al usuario un número entero entre 1 y 10 y lo almacena en una variable
    # int() convierte el valor ingresado a un número entero
    valor_inicial = int(input("Ingrese un número entero entre 1 y 10: "))
    
    # Solicita al usuario un número entero entre 15 y 20 y lo almacena en una variable
    # int() convierte el valor ingresado a un número entero
    valor_final = int(input("Ingrese un número entero entre 15 y 20: "))
    
    # Estructura repetitiva de control de flujo para imprimir los números enteros desde el primer número ingresado hasta el segundo número ingresado
    for i in range(valor_inicial, valor_final + 1): # valor_final + 1 es para incluir el número final
    
        print(i)
    
    Terminal (Entrada/Salida)
    Ingrese un número entero entre 1 y 10: 9
    Ingrese un número entero entre 15 y 20: 16
    9
    10
    11
    12
    13
    14
    15
    16
    _
    

    Se utiliza la función input() para solicitar al usuario un número entero entre 1 y 10. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero entre 1 y 10: ".

    El valor ingresado por el usuario es devuelto como cadena por la función input() por lo que se convierte a un número entero y se almacena en la variable valor_inicial. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza la función input() para solicitar al usuario un número entero entre 15 y 20. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero entre 15 y 20: ".

    El valor ingresado por el usuario es devuelto como cadena por la función input() por lo que se convierte a un número entero y se almacena en la variable valor_final. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura repetitiva de control de flujo for para imprimir los números enteros desde el primer número ingresado hasta el segundo número ingresado. La variable i recorre un rango de valores desde el primer número ingresado hasta el segundo número ingresado más 1. En cada iteración, se imprime en pantalla el valor de i.

    La salida en la Terminal (Entrada/Salida) es 9, 10, 11, 12, 13, 14, 15 y 16, ya que se ingresaron los números 9 y 16.

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.


  5. Escribe un programa que solicite un número entero positivo. Luego, que solicite un número negativo. A continuación, que imprima los números enteros desde el primer número ingresado hasta el segundo número ingresado.

    En este caso, asumiremos que el usuario no se va a equivocar en el ingreso de datos. Es decir, no es necesario controlar que los números ingresados sean positivos o negativos.

    En este caso: ¿Qué estructura repetitiva debes implementar?

    Para este caso, debes implementar una estructura repetitiva de control de flujo for para imprimir los números enteros desde el primer número ingresado hasta el segundo número ingresado por el usuario.

    Es un ciclo cerrado. Se conoce la cantidad de iteraciones o repeticiones. El ciclo se repite desde el primer número ingresado hasta el segundo número ingresado.

    Haz clic aquí para ver la solución propuesta
    Python
    # Solicita al usuario un número entero positivo y lo almacena en una variable
    # int() convierte el valor ingresado a un número entero
    valor_inicial = int(input("Ingrese un número entero positivo: "))
    
    # Solicita al usuario un número entero negativo y lo almacena en una variable
    # int() convierte el valor ingresado a un número entero
    valor_final = int(input("Ingrese un número entero negativo: "))
    
    # Estructura repetitiva de control de flujo para imprimir los números enteros desde el primer número ingresado hasta el segundo número ingresado
    for i in range(valor_inicial, valor_final - 1, -1): # valor_final - 1 es para incluir el número final
    
        print(i)
    
    Terminal (Entrada/Salida)
    Ingrese un número entero positivo: 5
    Ingrese un número entero negativo: -3
    5
    4
    3
    2
    1
    0
    -1
    -2
    -3
    _
    

    Se utiliza la función input() para solicitar al usuario un número entero positivo. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero positivo: ".

    El valor ingresado por el usuario es devuelto como cadena por la función input() por lo que se convierte a un número entero y se almacena en la variable valor_inicial. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza la función input() para solicitar al usuario un número entero negativo. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero negativo: ".

    El valor ingresado por el usuario es devuelto como cadena por la función input() por lo que se convierte a un número entero y se almacena en la variable valor_final. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura repetitiva de control de flujo for para imprimir los números enteros desde el primer número ingresado hasta el segundo número ingresado. La variable i recorre un rango de valores desde el primer número ingresado hasta el segundo número ingresado menos 1, con un paso de -1. En cada iteración, se imprime en pantalla el valor de i.

    La salida en la Terminal (Entrada/Salida) es 5, 4, 3, 2, 1, 0, -1, -2 y -3, ya que se ingresaron los números 5 y -3.

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.


  6. Refactoriza el programa anterior para que el usuario ingrese dos números enteros diferentes entre 5 y 20, sin importar cual número es más grande. Luego, que imprima la secuencia de números, entre el primer número ingresado y el segundo número ingresado.

    En este caso, asumiremos que el usuario no se va a equivocar en el ingreso de datos. Es decir, no es necesario controlar que los números ingresados estén en el rango solicitado ni que sean distintos.

    La única limitación es que el programa solo puede implementar una estructura repetitiva de control de flujo. Y debe ser una estructura repetitiva de control de flujo for.

    Para pensar:

    Recuerda que la estructura repetitiva debe ser controlada mediante variables. Entonces, si puedes conocer de antemano como es la relación entre los números ingresados, puedes manipular los parámetros de la función range() para lograr el resultado esperado.

    Haz clic aquí para ver la solución propuesta
    Python
    # Solicita al usuario dos números enteros diferentes entre 5 y 20 y los almacena en variables
    # int() convierte el valor ingresado a un número entero
    valor_1 = int(input("Ingrese un número entero entre 5 y 20: "))
    valor_2 = int(input("Ingrese otro número entero, diferente al anterior, entre 5 y 20: "))
    
    # Estructura alternativa de control de flujo para determinar como será la secuencia de números a imprimir y el paso de la misma
    if valor_1 < valor_2:
        paso = 1 # Incremento
    else:
        paso = -1 # Decremento
    
    # Estructura repetitiva de control de flujo para imprimir la secuencia de números entre el primer número ingresado y el segundo número ingresado
    for i in range(valor_1, valor_2 + paso, paso): # valor_2 + paso es para incluir el número final
    
        print(i)
    
    Terminal (Entrada/Salida)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Ingrese un número entero entre 5 y 20: 10
    Ingrese otro número entero, diferente al anterior, entre 5 y 20: 15
    10
    11
    12
    13
    14
    15
    _
    
    Terminal (Entrada/Salida)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Ingrese un número entero entre 5 y 20: 15
    Ingrese otro número entero, diferente al anterior, entre 5 y 20: 10
    15
    14
    13
    12
    11
    10
    _
    

    Se utiliza la función input() para solicitar al usuario dos números enteros diferentes entre 5 y 20. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero entre 5 y 20: " y luego "Ingrese otro número entero, diferente al anterior, entre 5 y 20: ".

    Los valores ingresados por el usuario son devueltos como cadenas por la función input() por lo que se convierten a números enteros y se almacenan en las variables valor_1 y valor_2. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura condicional simple if… else para determinar el paso de la secuencia de números a imprimir. Si el primer número ingresado es menor al segundo número ingresado, el paso es 1. Si el primer número ingresado es mayor al segundo número ingresado, el paso es -1.

    Se utiliza una estructura repetitiva de control de flujo for para imprimir la secuencia de números entre el primer número ingresado y el segundo número ingresado. La variable i recorre un rango de valores desde el primer número ingresado hasta el segundo número ingresado más el paso, con un paso de 1 o -1 según corresponda. En cada iteración, se imprime en pantalla el valor de i.

    En el primer ejemplo, la salida en la Terminal (Entrada/Salida) es 10, 11, 12, 13, 14 y 15, ya que se ingresaron los números 10 y 15.

    En el segundo ejemplo, la salida en la Terminal (Entrada/Salida) es 15, 14, 13, 12, 11 y 10, ya que se ingresaron los números 15 y 10.

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.


  7. Refactoriza el programa anterior para controlar que los números ingresados sean diferentes. Si los números ingresados son iguales, el programa debe solicitar nuevamente el segundo número entero. Además, el programa debe controlar que los números ingresados estén en el rango solicitado. Si los números ingresados no están en el rango solicitado, el programa debe solicitar nuevamente cada número fuera de rango.

    Pista:

    En este caso, deberás implementar estructuras alternativas en conjunto con estructuras repetitivas de control de flujo. Además, precisarás utilizar ciclos abiertos y ciclos cerrados, según corresponda.

    Haz clic aquí para ver la solución propuesta
    Python
    # Solicita al usuario un número entero entre 5 y 20, controlando que esté en el rango solicitado
    # int() convierte el valor ingresado a un número entero
    while True:
        valor_1 = int(input("Ingrese un número entero entre 5 y 20: "))
    
        # Verifica si el número ingresado está en el rango solicitado
        if 5 <= valor_1 <= 20:
            # Sale del ciclo si el número ingresado está en el rango solicitado
            break
        else:
            # Muestra un mensaje de error si el número ingresado no está en el rango solicitado
            print("El número ingresado no está en el rango solicitado. Intente nuevamente.")
    
    
    # Solicita al usuario un número entero diferente al anterior, entre 5 y 20, controlando que esté en el rango solicitado y sea diferente al primer número ingresado
    # int() convierte el valor ingresado a un número entero
    while True:
        valor_2 = int(input("Ingrese otro número entero, diferente al anterior, entre 5 y 20: "))
    
        # Verifica si el número ingresado está en el rango solicitado y es diferente al primer número ingresado 
        if 5 <= valor_2 <= 20 and valor_1 != valor_2:
            # Sale del ciclo si el número ingresado está en el rango solicitado y es diferente al primer número ingresado
            break
    
        # Verifica si el número ingresado es igual al primer número ingresado
        elif valor_1 == valor_2:
            print("El número ingresado es igual al anterior. Intente nuevamente.")
    
        else:
            # Muestra un mensaje de error si el número ingresado no está en el rango solicitado o es igual al anterior
            print("El número ingresado no está en el rango solicitado. Intente nuevamente.")
    
    # Estructura alternativa de control de flujo para determinar como será la secuencia de números a imprimir y el paso de la misma
    if valor_1 < valor_2:
        paso = 1 # Incremento
    else: 
        paso = -1 # Decremento
    
    # Estructura repetitiva de control de flujo para imprimir la secuencia de números entre el primer número ingresado y el segundo número ingresado
    for i in range(valor_1, valor_2 + paso, paso): # valor_2 + paso es para incluir el número final
    
        print(i)
    
    Terminal (Entrada/Salida)
    Ingrese un número entero entre 5 y 20: 4
    El número ingresado no está en el rango solicitado. Intente nuevamente.
    Ingrese un número entero entre 5 y 20: 25
    El número ingresado no está en el rango solicitado. Intente nuevamente.
    Ingrese un número entero entre 5 y 20: 10
    Ingrese otro número entero, diferente al anterior, entre 5 y 20: 10
    El número ingresado es igual al anterior. Intente nuevamente.
    Ingrese otro número entero, diferente al anterior, entre 5 y 20: 21
    El número ingresado no está en el rango solicitado. Intente nuevamente.
    Ingrese otro número entero, diferente al anterior, entre 5 y 20: 3 
    El número ingresado no está en el rango solicitado. Intente nuevamente.
    Ingrese otro número entero, diferente al anterior, entre 5 y 20: 7
    10
    9
    8
    7
    _
    

    Se utiliza la función input() para solicitar al usuario dos números enteros diferentes entre 5 y 20. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero entre 5 y 20: " y luego "Ingrese otro número entero, diferente al anterior, entre 5 y 20: ".

    Los valores ingresados por el usuario son devueltos como cadenas por la función input() por lo que se convierten a números enteros y se almacenan en las variables valor_1 y valor_2. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura repetitiva de control de flujo while para controlar que el primer número ingresado esté en el rango solicitado. La condición de la estructura repetitiva es que el número ingresado esté entre 5 y 20. Si el número ingresado no está en el rango solicitado, se muestra un mensaje de error en la salida estándar y se solicita al usuario un número entero nuevamente.

    Se utiliza una estructura repetitiva de control de flujo while para controlar que el segundo número ingresado esté en el rango solicitado y sea diferente al primer número ingresado. La condición de la estructura repetitiva es que el número ingresado esté entre 5 y 20 y sea diferente al primer número ingresado. Si el número ingresado no está en el rango solicitado o es igual al primer número ingresado, se muestra un mensaje de error en la salida estándar y se solicita al usuario un número entero nuevamente.

    Se utiliza una estructura condicional simple if… else para determinar el paso de la secuencia de números a imprimir. Si el primer número ingresado es menor al segundo número ingresado, el paso es 1. Si el primer número ingresado es mayor al segundo número ingresado, el paso es -1.

    Se utiliza una estructura repetitiva de control de flujo for para imprimir la secuencia de números entre el primer número ingresado y el segundo número ingresado. La variable i recorre un rango de valores desde el primer número ingresado hasta el segundo número ingresado más el paso, con un paso de 1 o -1 según corresponda. En cada iteración, se imprime en pantalla el valor de i.

    La salida en la Terminal (Entrada/Salida) es 10, 9, 8 y 7, ya que se ingresaron los números 10 y 7.

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.


  8. Refactoriza el programa anterior para que ahora, sin importar el valor de cada número ingresado, siempre imprima desde el mayor hasta el menor.

    Haz clic aquí para ver la solución propuesta
    Python
    # Solicita al usuario dos números enteros diferentes entre 5 y 20, controlando que estén en el rango solicitado
    # int() convierte el valor ingresado a un número entero
    while True:
        valor_1 = int(input("Ingrese un número entero entre 5 y 20: "))
    
        # Verifica si el número ingresado está en el rango solicitado
        if 5 <= valor_1 <= 20:
            # Sale del ciclo si el número ingresado está en el rango solicitado
            break
        else:
            # Muestra un mensaje de error si el número ingresado no está en el rango solicitado
            print("El número ingresado no está en el rango solicitado. Intente nuevamente.")
    
    # Solicita al usuario un número entero diferente al anterior, entre 5 y 20, controlando que esté en el rango solicitado y sea diferente al primer número ingresado
    
    # int() convierte el valor ingresado a un número entero
    while True:
        valor_2 = int(input("Ingrese otro número entero, diferente al anterior, entre 5 y 20: "))
    
        # Verifica si el número ingresado está en el rango solicitado y es diferente al primer número ingresado 
        if 5 <= valor_2 <= 20 and valor_1 != valor_2:
            # Sale del ciclo si el número ingresado está en el rango solicitado y es diferente al primer número ingresado
            break
    
        # Verifica si el número ingresado es igual al primer número ingresado
        elif valor_1 == valor_2:
            print("El número ingresado es igual al anterior. Intente nuevamente.")
    
        else:
            # Muestra un mensaje de error si el número ingresado no está en el rango solicitado o es igual al anterior
            print("El número ingresado no está en el rango solicitado. Intente nuevamente.")
    
    # Estructura repetitiva de control de flujo para imprimir la secuencia de números entre el primer número ingresado y el segundo número ingresado, desde el mayor al menor
    for i in range(max(valor_1, valor_2), min(valor_1, valor_2) - 1, -1): # min(valor_1, valor_2) - 1 es para incluir el número final
    
        print(i)
    
    Terminal (Entrada/Salida)
    1
    2
    3
    4
    5
    6
    7
    Ingrese un número entero entre 5 y 20: 10
    Ingrese otro número entero, diferente al anterior, entre 5 y 20: 7
    10
    9
    8
    7
    _
    

    Se utiliza la función input() para solicitar al usuario dos números enteros diferentes entre 5 y 20. La función input() muestra un mensaje en la salida estándar y espera a que el usuario presione ENTER (ingresando un valor previamente). En este caso, el mensaje es "Ingrese un número entero entre 5 y 20: " y luego "Ingrese otro número entero, diferente al anterior, entre 5 y 20: ".

    Los valores ingresados por el usuario son devueltos como cadenas por la función input() por lo que se convierten a números enteros y se almacenan en las variables valor_1 y valor_2. Recuerda que input() siempre devuelve una cadena de caracteres.

    Se utiliza una estructura repetitiva de control de flujo while para controlar que el primer número ingresado esté en el rango solicitado. La condición de la estructura repetitiva es que el número ingresado esté entre 5 y 20. Si el número ingresado no está en el rango solicitado, se muestra un mensaje de error en la salida estándar y se solicita al usuario un número entero nuevamente.

    Se utiliza una estructura repetitiva de control de flujo while para controlar que el segundo número ingresado esté en el rango solicitado y sea diferente al primer número ingresado. La condición de la estructura repetitiva es que el número ingresado esté entre 5 y 20 y sea diferente al primer número ingresado. Si el número ingresado no está en el rango solicitado o es igual al primer número ingresado, se muestra un mensaje de error en la salida estándar y se solicita al usuario un número entero nuevamente.

    Se utiliza una estructura repetitiva de control de flujo for para imprimir la secuencia de números entre el primer número ingresado y el segundo número ingresado, desde el mayor al menor. La variable i recorre un rango de valores desde el mayor número ingresado hasta el menor número ingresado menos 1, con un paso de -1. En cada iteración, se imprime en pantalla el valor de i.

    La salida en la Terminal (Entrada/Salida) es 10, 9, 8 y 7, ya que se ingresaron los números 10 y 7.

    El símbolo _ significa que el cursor queda en esa línea de la Terminal luego del salto de línea producido por la función print() por defecto.

    Sobre la función max() y min()

    • La función max() devuelve el mayor de los argumentos pasados como parámetros.
    • La función min() devuelve el menor de los argumentos pasados como parámetros.

    La línea:

    for i in range(max(valor_1, valor_2), min(valor_1, valor_2) - 1, -1)

    permite resolver el problema de imprimir desde el mayor al menor, sin importar el valor de cada número ingresado.

    De otra manera, se debería implementar una estructura condicional para determinar el paso de la secuencia de números a imprimir:

    Python
    # Estructura alternativa de control de flujo para determinar como será la secuencia de números a imprimir y el paso de la misma
    if valor_1 < valor_2:
        maximo = valor_2
        minimo = valor_1
    else:
        maximo = valor_1
        minimo = valor_2
    
    # Estructura repetitiva de control de flujo para imprimir la secuencia de números entre el primer número ingresado y el segundo número ingresado, desde el mayor al menor
    for i in range(maximo, minimo - 1, -1): # minimo - 1 es para incluir el número final
    
        print(i)