Ejercitación introductoria
Estructuras repetitivas de control de flujo
-
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
Terminal (Entrada/Salida) Terminal (Entrada/Salida) Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario un número entero positivo. 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 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 variablenumero
. Recuerda queinput()
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 variablenumero
.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ónprint()
por defecto.
-
Escribe un programa que solicite números enteros hasta que se ingrese el 0. Al finalizar, el programa deberá indicar:
- ¿Cuántos números fueron ingresados?
- ¿Cuántos números fueron positivos?
- ¿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
Terminal (Entrada/Salida) Se inicializan las variables contadoras
cantidad_numeros
,cantidad_positivos
ycantidad_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ónbreak
.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 (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 variablenumero
. Recuerda queinput()
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ónbreak
.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ónprint()
por defecto.
-
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 desdevi
incluido hasta el último valor anterior avf
, con un pasop
.Se puede omitir el paso: Para
range(vi, vf)
si no se especificap
, el valor por defecto es 1.También se puede omitir el valor inicial y el paso: Para
range(vf)
si no se especificavi
, el valor por defecto es 0; y si no se especificap
, el valor por defecto es 1.Recuerda que
vi
se incluye en el rango mientras quevf
no (es el primer valor falso, fuera del rango entrevi
inclusive yvf
no inclusive).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 positivo entre 5 y 10. 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 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 variablenumero
. Recuerda queinput()
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 variablei
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 dei
.La salida en la Terminal (Entrada/Salida) es
0
,1
,2
,3
,4
,5
,6
y7
, 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ónprint()
por defecto.
-
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
Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario un número entero entre 1 y 10. 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 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 variablevalor_inicial
. Recuerda queinput()
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ó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 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 variablevalor_final
. Recuerda queinput()
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 variablei
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 dei
.La salida en la Terminal (Entrada/Salida) es
9
,10
,11
,12
,13
,14
,15
y16
, 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ónprint()
por defecto.
-
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
Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario un número entero positivo. 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 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 variablevalor_inicial
. Recuerda queinput()
siempre devuelve una cadena de caracteres.Se utiliza la función
input()
para solicitar al usuario un número entero negativo. 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 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 variablevalor_final
. Recuerda queinput()
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 variablei
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 dei
.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ónprint()
por defecto.
-
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
Terminal (Entrada/Salida) Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario dos números enteros diferentes entre 5 y 20. 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 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 variablesvalor_1
yvalor_2
. Recuerda queinput()
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 variablei
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 dei
.En el primer ejemplo, la salida en la Terminal (Entrada/Salida) es
10
,11
,12
,13
,14
y15
, 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
y10
, 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ónprint()
por defecto.
-
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
Se utiliza la función
input()
para solicitar al usuario dos números enteros diferentes entre 5 y 20. 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 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 variablesvalor_1
yvalor_2
. Recuerda queinput()
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 variablei
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 dei
.La salida en la Terminal (Entrada/Salida) es
10
,9
,8
y7
, 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ónprint()
por defecto.
-
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
Terminal (Entrada/Salida) Se utiliza la función
input()
para solicitar al usuario dos números enteros diferentes entre 5 y 20. 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 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 variablesvalor_1
yvalor_2
. Recuerda queinput()
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 variablei
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 dei
.La salida en la Terminal (Entrada/Salida) es
10
,9
,8
y7
, 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ónprint()
por defecto.Sobre la función
max()
ymin()
- 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)
- La función