Ejercitación aplicada
Estructuras repetitivas de control de flujo
-
Escribe un programa que solicite la cantidad de empleados a saludar todas las mañanas en una empresa. Luego, que solicite, uno a uno, el nombre de cada empleado y efectúe el saludo.
Este saludo debe ser: "Hola" y el nombre de empleado.El programa no puede contener líneas de código que en su acción o tarea hagan lo mismo.
Debes utilizar estructuras repetitivas de control de flujo.
El programa debe finalizar cuando se haya saludado a todos los empleados.Haz clic aquí para ver la solución propuesta
Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario la cantidad de empleados a saludar todas las mañanas. La funcióninput()
muestra un mensaje en la salida estándar y espera a que el usuario presioneENTER
(ingresando un valor previamente). En este caso, el mensaje es"Ingrese la cantidad de empleados a saludar esta mañana: "
.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 variablecantidad_empleados
. Recuerda queinput()
siempre devuelve una cadena de caracteres.Se utiliza una estructura repetitiva de control de flujo
while
para saludar a todos los empleados. La condición de la estructura repetitiva es que la cantidad de empleados a saludar sea mayor a 0. Mientras la condición sea verdadera, se solicita al usuario el nombre del empleado y se almacena en la variablenombre_empleado
. Luego, se saluda al empleado con el mensaje"Hola"
seguido del nombre del empleado. Finalmente, se decrementa la cantidad de empleados a saludar en 1.La salida en la Terminal (Entrada/Salida) es
"Hola Juan."
,"Hola María."
y"Hola Pedro."
, ya que se ingresaron los nombres de los empleados Juan, María y Pedro respectivamente.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ónprint()
por defecto.Para pensar:
¿Te parece que la estructura de control de flujo
for
es más adecuada quewhile
para este caso? ¿Por qué?Pista
Recuerda que existen dos tipos de estructuras repetitivas de control de flujo:
for
ywhile
. Una se emplea para ciclos abiertos (cuando no se conoce la cantidad de iteraciones -o repeticiones-) y la otra para ciclos cerrados (cuando se conoce la cantidad de iteraciones -o repeticiones).También recuerda que el concepto de ciclo abierto o de ciclo cerrado se refiere a que el programa sabe en su lógica cuántas veces se va a repetir una acción o tarea. Esto quiere decir que si esa cantidad de repeticiones es definida en una variable, no significa que el ciclo sea cerrado. Al momento de ejecutarse el ciclo, el programa ya sabrá cuántas veces se repetirá la acción o tarea porque la variable de control ya tendría un valor asignado.
Si lo crees conveniente, refactoriza tu programa para lograr una solución más eficiente.
Haz clic aquí para ver una mejor solución propuesta
Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario la cantidad de empleados a saludar todas las mañanas. La funcióninput()
muestra un mensaje en la salida estándar y espera a que el usuario presioneENTER
(ingresando un valor previamente). En este caso, el mensaje es"Ingrese la cantidad de empleados a saludar esta mañana: "
.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 variablecantidad_empleados
. Recuerda queinput()
siempre devuelve una cadena de caracteres.Se utiliza una estructura repetitiva de control de flujo
for
para saludar a todos los empleados. La variableempleado
recorre un rango de valores desde 1 hasta la cantidad de empleados a saludar más 1. En cada iteración, se solicita al usuario el nombre del empleado y se almacena en la variablenombre_empleado
. Luego, se saluda al empleado con el mensaje"Hola"
seguido del nombre del empleado.La salida en la Terminal (Entrada/Salida) es
"Hola Juan."
,"Hola María."
y"Hola Pedro."
, ya que se ingresaron los nombres de los empleados Juan, María y Pedro respectivamente.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ónprint()
por defecto.Para reflexionar
La estructura de control de flujo
for
es más adecuada quewhile
para este caso, ya que se conoce la cantidad de empleados a saludar todas las mañanas.Por lo tanto, el ciclo es cerrado y se puede utilizar
for
para recorrer un rango de valores desde 1 hasta la cantidad de empleados a saludar más 1.
-
Refactoriza el programa del ejercicio anterior para que indique el número de empleado al que se le pregunta el nombre.
Por ejemplo: "Ingrese el nombre del empleado 1: ". Luego, "Ingrese el nombre del empleado 2: ", y así sucesivamente.Pista
Utiliza la variable de control del ciclo
for
para indicar el número de empleado al que se le pregunta el nombre.Haz clic aquí para ver la solución propuesta
Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario la cantidad de empleados a saludar todas las mañanas. La funcióninput()
muestra un mensaje en la salida estándar y espera a que el usuario presioneENTER
(ingresando un valor previamente). En este caso, el mensaje es"Ingrese la cantidad de empleados a saludar esta mañana: "
.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 variablecantidad_empleados
. Recuerda queinput()
siempre devuelve una cadena de caracteres.Se utiliza una estructura repetitiva de control de flujo
for
para saludar a todos los empleados. La variableempleado
recorre un rango de valores desde 1 hasta la cantidad de empleados a saludar más 1. En cada iteración, se solicita al usuario el nombre del empleado y se almacena en la variablenombre_empleado
. Luego, se saluda al empleado con el mensaje"Hola"
seguido del nombre del empleado.La salida en la Terminal (Entrada/Salida) es
"Hola Juan."
,"Hola María."
y"Hola Pedro."
, ya que se ingresaron los nombres de los empleados Juan, María y Pedro respectivamente.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ónprint()
por defecto.
-
Escribe un programa que solicite un número entero entre 2 y 10 al usuario. El número debe validarse. Luego, que el programa imprima la tabla de multiplicar de ese número.
Haz clic aquí para ver la solución propuesta
Terminal (Entrada/Salida) Se utiliza una estructura repetitiva de control de flujo
while True
para solicitar al usuario un número entero entre 2 y 10. Se controla que el número ingresado esté dentro del rango correspondiente. Si el número ingresado no está dentro del rango, se muestra un mensaje de error y se solicita nuevamente un número entero.Se utiliza una estructura repetitiva de control de flujo
for
para imprimir la tabla de multiplicar del número ingresado. La variablemultiplicador
recorre un rango de valores desde 1 hasta 10. En cada iteración, se calcula el resultado de la multiplicación entre el número ingresado y el multiplicador. Luego, se imprime la tabla de multiplicar en la salida estándar.La salida en la Terminal (Entrada/Salida) es
"5 x 1 = 5"
,"5 x 2 = 10"
,"5 x 3 = 15"
,"5 x 4 = 20"
,"5 x 5 = 25"
,"5 x 6 = 30"
,"5 x 7 = 35"
,"5 x 8 = 40"
,"5 x 9 = 45"
y"5 x 10 = 50"
, ya que se ingresó el número 5 y se imprimió la tabla de multiplicar del 5.
-
Escribe un programa que imprima los primeros 10 múltiplos de un número entero ingresado por el usuario.
Haz clic aquí para ver la solución propuesta
Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario un número entero. La funcióninput()
muestra un mensaje en la salida estándar y espera a que el usuario presioneENTER
(ingresando un valor previamente). En este caso, el mensaje es"Ingrese un número entero: "
.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 variablenumero
. Recuerda queinput()
siempre devuelve una cadena de caracteres.Se utiliza una estructura repetitiva de control de flujo
for
para imprimir los primeros 10 múltiplos del número ingresado. La variablemultiplo
recorre un rango de valores desde 1 hasta 10. En cada iteración, se calcula el resultado de la multiplicación entre el número ingresado y el multiplicador. Luego, se imprime los primeros 10 múltiplos del número ingresado en la salida estándar.La salida en la Terminal (Entrada/Salida) es
"3 x 1 = 3"
,"3 x 2 = 6"
,"3 x 3 = 9"
,"3 x 4 = 12"
,"3 x 5 = 15"
,"3 x 6 = 18"
,"3 x 7 = 21"
,"3 x 8 = 24"
,"3 x 9 = 27"
y"3 x 10 = 30"
, ya que se ingresó el número 3 y se imprimieron los primeros 10 múltiplos del 3.
-
Dado el siguiente fragmento de un programa:
Python# Importa la función sleep del módulo time. Esta función permite pausar la ejecución del programa durante un tiempo determinado. from time import sleep for …: # Completa los puntos suspensivos print(f"{seg}...") # ¿Te acuerdas que hace el f-string? sleep(1) # ¿Qué crees que hace la función sleep? print("BOOM!") # ¿Cuándo se imprime "BOOM!"?
Completa los puntos suspensivos para que el programa realice una cuenta regresiva desde 5 hasta 1 y luego imprima "BOOM!".
Haz clic aquí para ver la solución propuesta
Se importa la función
sleep
del módulotime
. Esta función permite pausar la ejecución del programa durante un tiempo determinado.Se utiliza una estructura repetitiva de control de flujo
for
para realizar una cuenta regresiva desde 5 hasta 1. La variableseg
recorre un rango de valores desde 5 hasta 1, decrementándose en 1 unidad en cada iteración. En cada iteración, se imprime el valor de la variableseg
seguido de tres puntos (...
) y se espera 1 segundo.La salida en la Terminal (Entrada/Salida) es
"5..."
,"4..."
,"3..."
,"2..."
,"1..."
y"BOOM!"
.
-
Escribe un programa que le pregunte al usuario, entre las 9 (hora de ingreso al trabajo) y las 18 (hora de egreso del trabajo): ¿Qué tarea va a realizar?
La pregunta debe ser: "¿Qué tarea va a realizar a las xxx horas?" y el programa debe esperar a que el usuario ingrese una tarea, aunque no se almacene en ninguna variable.
Haz clic aquí para ver la solución propuesta
Se utiliza una estructura repetitiva de control de flujo
for
para preguntar al usuario qué tarea va a realizar a cada hora. La variablehora
recorre un rango de valores desde 9 hasta 18, sin incluir la hora 18, ya que a esa hora se retira del trabajo. En cada iteración, se muestra un mensaje al usuario preguntando qué tarea va a realizar a la hora correspondiente.La salida en la Terminal (Entrada/Salida) es
"¿Qué tarea va a realizar a las 9 horas? Trabajar en el informe."
,"¿Qué tarea va a realizar a las 10 horas? Reunión con el equipo."
,"¿Qué tarea va a realizar a las 11 horas? Llamada con el cliente."
,"¿Qué tarea va a realizar a las 12 horas? Almorzar."
,"¿Qué tarea va a realizar a las 13 horas? Revisar correos electrónicos."
,"¿Qué tarea va a realizar a las 14 horas? Capacitación en línea."
,"¿Qué tarea va a realizar a las 15 horas? Reunión de seguimiento."
,"¿Qué tarea va a realizar a las 16 horas? Trabajar en el proyecto."
,"¿Qué tarea va a realizar a las 17 horas? Preparar informe de cierre."
.
-
Dado el siguiente fragmento inicial de un programa:
Python# Importa el módulo random. Este módulo permite trabajar con números aleatorios. import random # Limpia la pantalla de la Terminal print("\033c", end="") # Muestra un mensaje en la Terminal print("Adivine el numero!") # Solicita al usuario su nombre nombre = input("Ingrese su nombre: ") # Muestra un saludo en la Terminal print(f"Hola {nombre}!") # Genera un número aleatorio entre 1 y 100 n_escondido = random.randint(1, 100) ⋮
Escribe un programa que permita adivinar el número
n_escondido
generado aleatoriamente.
El usuario deberá ingresar un número entero dentro del rango correspondiente y el programa deberá indicar si el número ingresado es mayor, menor o igual al númeron_escondido
.El programa debe finalizar cuando el usuario adivine el número
n_escondido
. Al ganar, el programa deberá indicar la cantidad de intentos que le llevó al usuario adivinar el número.El programa, además, debe controlar que el número ingresado por el usuario se encuentre dentro del rango correspondiente.
Haz clic aquí para ver la solución propuesta
Se importa el módulo
random
para trabajar con números aleatorios. Luego, se genera un número aleatorio entre 1 y 100 y se almacena en la variablen_escondido
.Se inicializa la variable
intentos
en 0 para llevar la cuenta de la cantidad de intentos que le llevó al usuario adivinar el númeron_escondido
.Se utiliza una estructura repetitiva de control de flujo
while True
para adivinar el númeron_escondido
. Dentro de esta estructura, se solicita al usuario un número entero y se controla que esté dentro del rango correspondiente (entre 1 y 100). Si el número ingresado no está dentro del rango, se muestra un mensaje de error y se solicita nuevamente un número entero.Se incrementa la cantidad de intentos en 1 cada vez que el usuario ingresa un número.
Se compara el número ingresado con el número
n_escondido
. Si el número escondido es mayor al número ingresado, se muestra un mensaje indicando que el número escondido es mayor. Si el número escondido es menor al número ingresado, se muestra un mensaje indicando que el número escondido es menor. Si el número escondido es igual al número ingresado, se muestra un mensaje de felicitaciones y la cantidad de intentos que le llevó al usuario adivinar el número.La salida en la Terminal (Entrada/Salida) es
"El número escondido es mayor."
,"El número escondido es menor."
,"El número escondido es menor."
,"El número escondido es mayor."
y"¡Felicitaciones! Adivinaste el número escondido en 5 intentos."
.
-
Escribe un programa que, dado un número determinado de unidades de calcetines, indique cuántos pares de medias pueden empaquetarse.
El programa debe solicitar al usuario la cantidad de unidades de calcetines. Este número debe ser un número entero positivo.
Además. debe indicar si sobra alguna media suelta que no se puede empaquetar en un par.
La limitación del programa está en que para calcular, solo puede ir sumando una variable acumuladora, de a una unidad por vez.
Pista
Utiliza una variable acumuladora para contar la cantidad de pares de medias que se pueden empaquetar.
Una variable acumuladora es una variable como cualquier otra, que se utiliza para incrementar o decrementar su valor en cada iteración de un ciclo.
Haz clic aquí para ver la solución propuesta
Terminal (Entrada/Salida) Se utiliza una estructura repetitiva de control de flujo
while True
para solicitar al usuario la cantidad de unidades de calcetines. Se controla que la cantidad de unidades de calcetines sea un número entero positivo. Si la cantidad de unidades de calcetines no es un número entero positivo, se muestra un mensaje de error y se solicita nuevamente la cantidad de unidades de calcetines.Se inicializa la variable acumuladora
pares_medias
en 0 para contar la cantidad de pares de medias que se pueden empaquetar.Se utiliza una estructura repetitiva de control de flujo
for
para empaquetar pares de medias. La variablecalcetin
recorre un rango de valores desde 1 hasta la cantidad de unidades de calcetines, incrementándose de a 2 unidades. En cada iteración, se incrementa la cantidad de pares de medias en 1.La salida en la Terminal (Entrada/Salida) es
"Se pueden empaquetar 3 pares de medias."
y"Sobra 1 media suelta."
, ya que se ingresaron 7 unidades de calcetines y se pueden empaquetar 3 pares de medias, sobrando 1 media suelta.