0% encontró este documento útil (0 votos)
61 vistas15 páginas

Bucle While

El documento presenta una serie de ejercicios resueltos utilizando bucles 'while' y 'for' en programación. Cada ejercicio aborda diferentes problemas, como la suma de números, la identificación de números primos, y el conteo de dígitos en números, entre otros. Además, se explica la estructura y funcionamiento de los bucles 'for', incluyendo ejemplos prácticos de su uso.

Cargado por

edward pino
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
61 vistas15 páginas

Bucle While

El documento presenta una serie de ejercicios resueltos utilizando bucles 'while' y 'for' en programación. Cada ejercicio aborda diferentes problemas, como la suma de números, la identificación de números primos, y el conteo de dígitos en números, entre otros. Además, se explica la estructura y funcionamiento de los bucles 'for', incluyendo ejemplos prácticos de su uso.

Cargado por

edward pino
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

EJERCCIOS RESULETOS CON WHILE

1
Leer números enteros de teclado, hasta que el usuario ingrese el 0.
Finalmente, mostrar la sumatoria de todos los números ingresados.
Solución:
total=0
nro=int(input("Número: "))
while nro != 0:
total+=nro
nro=int(input("Número: "))

2
Leer números enteros de teclado, hasta que el usuario ingrese el 0.
Finalmente, mostrar la sumatoria de todos los números positivos ingresados.
Solución:
positivos=0
n=int(input("Número (0 para terminar): "))
while n!=0:
if n>0:
positivos+=1
n=int(input("Número (0 para terminar): "))
print("Cantidad de positivos:", positivos)

3
Leer números enteros positivos de teclado, hasta que el usuario ingrese el 0.
Informar cuál fue el mayor número ingresado.
Solución:
mayor=-1
n=int(input("Número positivo:"))
while n>=0:
if n>mayor:
mayor=n
n=int(input("Número positivo:"))
print("Mayor número ingresado:", mayor)

4
Leer un número entero positivo desde teclado e imprimir la suma de los dígitos
que lo componen.
Solución:
suma=0
n=int(input("Número positivo:"))
while n!=0:
digito=n%10
suma+=digito
n=n//10
print("Suma de los dígitos:", suma)

5
Solicitar al usuario que ingrese números enteros positivos y, por cada uno,
imprimir la suma de los dígitos que lo componen. La condición de corte es que
se ingrese el número -1. Al finalizar, mostrar cuántos de los números
ingresados por el usuario fueron números pares.
Solución:
pares=0
n=int(input("Número (-1 para terminar el programa): "))
while n!=-1:
if n%2 == 0:
pares+=1
suma=0
while n!=0:
digito=n%10
suma+=digito
n=n//10
print("Suma de sus dígitos:", suma)
n=int(input("Número (-1 para terminar el programa): "))
print("Se ingresaron", pares, "números pares")

6
Mostrar un menú con tres opciones: 1- comenzar programa, 2- imprimir listado,
3-finalizar programa. A continuación, el usuario debe poder seleccionar una
opción (1, 2 ó 3). Si elige una opción incorrecta, informarle del error. El menú
se debe volver a mostrar luego de ejecutada cada opción, permitiendo volver a
elegir. Si elige las opciones 1 ó 2 se imprimirá un texto. Si elige la opción 3, se
interrumpirá la impresión del menú y el programa finalizará.
Solución:
while True:
print("Opción 1 - comenzar programa")
print("Opción 2 - imprimir listado")
print("Opción 3 - finalizar programa")
opcion=int(input("Opción elegida: "))
if opcion==1:
print("¡Comenzamos!")
elif opcion==2:
print("Listado:")
print("Nadia, Esteban, Mariela, Fernanda")
elif opcion==3:
print("Hasta la próxima")
break
else:
print("Opción incorrecta. Debe ingresar 1, 2 o 3")

7
Solicitar al usuario el ingreso de una frase y de una letra (que puede o no estar
en la frase). Recorrer la frase, carácter a carácter, comparando con la letra
buscada. Si el carácter no coincide, indicar que no hay coincidencia en esa
posición (imprimiendo la posición) y continuar. Si se encuentra una
coincidencia, indicar en qué posición se encontró y finalizar la ejecución.
Solución:
frase=input("Frase: ")
l=input("Letra para buscar su posición: ")
i=0
while i!=len(frase):
if l!=frase[i]:
print("No se encontró en la posición", i)
i+=1
continue
print("Se encontró en la posición", i)
break

8
Crear un programa que permita al usuario ingresar los montos de las compras
de un cliente (se desconoce la cantidad de datos que cargará, la cual puede
cambiar en cada ejecución), cortando el ingreso de datos cuando el usuario
ingrese el monto 0.
Si ingresa un monto negativo, no se debe procesar y se debe pedir que ingrese
un nuevo monto. Al finalizar, informar el total a pagar teniendo que cuenta que,
si las ventas superan el total de $1000, se le debe aplicar un 10% de
descuento.
Solución:
total=0
monto=float(input("Monto de una venta: $"))
while monto!=0:
if monto<0:
print("Monto no válido.")
else:
total+=monto
monto=float(input("Monto de una venta: $"))
if total>1000:
total-=total*0.1
print("Monto total a pagar: $", total)

9
Crear un programa que solicite el ingreso de números enteros positivos, hasta
que el usuario ingrese el 0. Por cada número, informar cuántos dígitos pares y
cuántos impares tiene.
Al finalizar, informar la cantidad de dígitos pares y de dígitos impares leídos en
total.
Solución:
numero=int(input("numero: "))
totalPares=0
totalImpares=0
while numero!=0:
pares=0
impares=0
while numero!=0:
ultimodigito=numero%10
if ultimodigito%2==0:
pares+=1
totalPares+=1
else:
impares+=1
totalImpares+=1
numero=numero//10
print("El número ingresado tiene ",pares," digitos pares y ",impares," dig
itos impares")
numero=int(input("Otro número: "))
print("Total de dígitos pares:", totalPares)
print("Total de dígitos impares:", totalImpares)

10
Crear un programa que permita al usuario ingresar títulos de libros por teclado,
finalizando el ingreso al leerse el string “*” (asterisco). Cada vez que el usuario
ingrese un string de longitud 1 que contenga sólo una barra (“/”) se considera
que termina una línea.

Por cada línea completa, informar cuántos dígitos numéricos (del 0 al 9)


aparecieron en total (en todos los títulos de libros que componen en esa línea).
Finalmente, informar cuántas líneas completas se ingresaron.
**Ejemplo de ejecución:**
Libro: Los 3 mosqueteros
Libro: Historia de 2 ciudades
Libro: /
Línea completa. Aparecen 2 dígitos numéricos.
Libro: 20000 leguas de viaje submarino
Libro: El señor de los anillos
Libro: /
Línea completa. Aparecen 5 dígitos numéricos.
Libro: 20 años después
Libro: *
Fin. Se leyeron 2 líneas completas.
Solución:
lineas=0
digitos="0123456789"
cantidadDigitos=0
cadena=input("Cadena: ")
while cadena!="*":
for caracter in cadena:
if caracter in digitos:
cantidadDigitos+=1
if cadena=="/":
lineas+=1
print("Aparecen ", cantidadDigitos, " dígitos en la línea")
cantidadDigitos=0
cadena=input("Cadena: ")
print("Se leyeron ",lineas," líneas completas")

11
Escribir un programa que solicite el ingreso de una cantidad indeterminada de
números mayores que 1, finalizando cuando se reciba un cero. Imprimir la
cantidad de números primos ingresados.
Solución:
cantidad=0
n=int(input("Número: "))
while n!=0:
primo=True
for i in range(2,n):
if n%i==0:
primo=False
break
if primo:
cantidad+=1
n=int(input("Número: "))
print("primos: ", cantidad)

12
Solicitar al usuario que ingrese una frase y luego informar cuál fue la palabra
más larga (en caso de haber más de una, mostrar la primera) y cuántas
palabras había. Precondición: se tomará como separador de palabras al
carácter “ “ (espacio), ya sea uno o más.
Solución:
frase=input("Frase: ").strip()
cantidad=0
len_p_mas_larga=0
while len(frase) != 0:
cantidad=cantidad+1
i=frase.find(" ")
if i != -1:
palabra=frase[0:i]
while i < len(frase) and frase[i] == " ":
i=i+1
frase=frase[i:]
else:
palabra=frase
frase=""
if len(palabra) > len_p_mas_larga:
len_p_mas_larga=len(palabra)
p_mas_larga=palabra
if cantidad > 0:
print("Palabra más larga:", p_mas_larga)
print("Cantidad de palabras:", cantidad)
Bucle for

En general, un bucle es una estructura de control que repite un bloque de instrucciones.


Un bucle for es un bucle que repite el bloque de instrucciones un número prederminado
de veces. El bloque de instrucciones que se repite se suele llamar cuerpo del bucle y
cada repetición se suele llamar iteración.
La sintaxis de un bucle for es la siguiente:

for variable in elemento iterable (lista, cadena, range, etc.):


cuerpo del bucle

No es necesario definir la variable de control antes del bucle, aunque se puede utilizar
como variable de control una variable ya definida en el programa.

El cuerpo del bucle se ejecuta tantas veces como elementos tenga el elemento recorrible
(elementos de una lista o de un range(), caracteres de una cadena, etc.). Por ejemplo:
Ejemplo de bucle 1

print("Comienzo")
for i in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")

Comienzo

Hola Hola Hola

Final

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
Si la lista está vacía, el bucle no se ejecuta ninguna vez. Por ejemplo:
Ejemplo de bucle 2

print("Comienzo")
for i in []:
print("Hola ", end="")
print()
print("Final")

Comienzo

Final

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.

En el primer ejemplo, los valores que toma la variable no son importantes, lo que
importa es que la lista tiene tres elementos y por tanto el bucle se ejecuta tres veces. El
siguiente programa produciría el mismo resultado que el anterior:
Ejemplo de bucle 3

print("Comienzo")
for i in [1, 1, 1]:
print("Hola ", end="")
print()
print("Final")

Comienzo

Hola Hola Hola

Final
Si la variable de control no se va a utilizar en el cuerpo del bucle, como en los ejemplos
anteriores, se puede utilizar el guion (_) en vez de un nombre de variable. Esta notación
no tiene ninguna consecuencia con respecto al funcionamiento del programa, pero sirve
de ayuda a la persona que esté leyendo el código fuente, que sabe así que los valores no
se van a utilizar. Por ejemplo:
Ejemplo de bucle 4

print("Comienzo")
for _ in [0, 1, 2]:
print("Hola ", end="")
print()
print("Final")

Comienzo

Hola Hola Hola

Final

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.

El indicador puede incluir cualquier número de guiones bajos (_, __, ___, ____, etc).
Los más utilizados son uno o dos guiones (_ o __).

En los ejemplos anteriores, la variable de control "i" no se utilizaba en el bloque de


instrucciones, pero en muchos casos sí que se utiliza. Cuando se utiliza, hay que tener
en cuenta que la variable de control va tomando los valores del elemento recorrible. Por
ejemplo:
Ejemplo de bucle 5

print("Comienzo")
for i in [3, 4, 5]:
print(f"Hola. Ahora i vale {i} y su cuadrado {i ** 2}")
print("Final")

Comienzo

Hola. Ahora i vale 3 y su cuadrado 9

Hola. Ahora i vale 4 y su cuadrado 16

Hola. Ahora i vale 5 y su cuadrado 25


Final

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.

La lista puede contener cualquier tipo de elementos, no sólo números. El bucle se


repetirá siempre tantas veces como elementos tenga la lista y la variable irá tomando los
valores de uno en uno. Por ejemplo:
Ejemplo de bucle 6

print("Comienzo")
for i in ["Alba", "Benito", 27]:
print(f"Hola. Ahora i vale {i}")
print("Final")

Comienzo

Hola. Ahora i vale Alba

Hola. Ahora i vale Benito

Hola. Ahora i vale 27

Final

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.

La costumbre más extendida es utilizar la letra i como nombre de la variable de control,


pero se puede utilizar cualquier otro nombre válido. Por ejemplo:
Ejemplo de bucle 7

print("Comienzo")
for numero in [0, 1, 2, 3]:
print(f"{numero} * {numero} = {numero ** 2}")
print("Final")

Comienzo

0 * 0 = 0

1 * 1 = 1
2 * 2 = 4

3 * 3 = 9

Final

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.

La variable de control puede ser una variable empleada antes del bucle. El valor que
tuviera la variable no afecta a la ejecución del bucle, pero cuando termina el bucle, la
variable de control conserva el último valor asignado:

i = 10
print(f"El bucle no ha comenzado. Ahora i vale {i}")

for i in [0, 1, 2, 3, 4]:


print(f"{i} * {i} = {i ** 2}")

print(f"El bucle ha terminado. Ahora i vale {i}")

El bucle no ha comenzado. Ahora i vale 10

0 * 0 = 0

1 * 1 = 1

2 * 2 = 4

3 * 3 = 9

4 * 4 = 16

El bucle ha terminado. Ahora i vale 4

Cuando se escriben dos o más bucles seguidos, la costumbre es utilizar el mismo


nombre de variable puesto que cada bucle establece los valores de la variable sin
importar los valores anteriores:

for i in [0, 1, 2]:


print(f"{i} * {i} = {i ** 2}")

print()
for i in [0, 1, 2, 3]:
print(f"{i} * {i} * {i} = {i ** 3}")

0 * 0 = 0

1 * 1 = 1

2 * 2 = 4

0 * 0 * 0 = 0

1 * 1 * 1 = 1

2 * 2 * 2 = 8

3 * 3 * 3 = 27

En vez de una lista se puede escribir una cadena, en cuyo caso la variable de control va
tomando como valor cada uno de los caracteres:

for i in "AMIGO":
print(f"Dame una {i}")
print("¡AMIGO!")

Dame una A

Dame una M

Dame una I

Dame una G

Dame una O

¡AMIGO!

En los ejemplos anteriores se ha utilizado una lista para facilitar la comprensión del
funcionamiento de los bucles pero, si es posible hacerlo, se recomienda utilizar
tipos range(), entre otros motivos porque durante la ejecución del programa ocupan
menos memoria en el ordenador.
El siguiente programa es equivalente al programa del ejemplo anterior:

print("Comienzo")
for i in range(3):
print("Hola ", end="")
print()
print("Final")

Comienzo
Hola Hola Hola
Final

Otra de las ventajas de utilizar tipos range() es que el argumento del tipo range()
controla el número de veces que se ejecuta el bucle.
En el ejemplo anterior basta cambiar el argumento para que el programa salude muchas
más veces.

print("Comienzo")
for i in range(10):
print("Hola ", end="")
print()
print("Final")

Comienzo

Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola
Final

Esto permite que el número de iteraciones dependa del desarrollo del programa. En el
ejemplo siguiente es el usuario quien decide cuántas veces se ejecuta el bucle:

veces = int(input("¿Cuántas veces quiere que le salude? "))


for i in range(veces):
print("Hola ", end="")
print()
print("Adiós")

¿Cuántas veces quiere que le salude? 6

Hola Hola Hola Hola Hola Hola


Adiós

Contadores, testigos y acumuladores


En muchos programas se necesitan variables que cuenten cuántas veces ha ocurrido algo
(contadores) o que indiquen si simplemente ha ocurrido algo (testigos) o que acumulen
valores (acumuladores). Las situaciones pueden ser muy diversas, por lo que en este
apartado simplemente se ofrecen unos ejemplos para mostrar la idea.

Contador

Se entiende por contador una variable que lleva la cuenta del número de veces que se ha
cumplido una condición. El ejemplo siguiente es un ejemplo de programa con contador
(en este caso, la variable que hace de contador es la variable cuenta):
Ejemplo de contador
print("Comienzo")
cuenta = 0
for i in range(1, 6):
if i % 2 == 0:
cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")

Comienzo

Desde 1 hasta 5 hay 2 múltiplos de 2

Ejemplo de contador - Paso final

print("Comienzo")
cuenta = 0
for i in range(1, 6):
if i % 2 == 0:
cuenta = cuenta + 1
print(f"Desde 1 hasta 5 hay {cuenta} múltiplos de 2")

Comienzo

Desde 1 hasta 5 hay 2 múltiplos de 2

Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.


En este caso, imprime el párrafo final. En total, la variable contador ha aumentado hasta
2 (los dos múltiplos de 2 que hay entre 1 y 5).

Detalles importantes:
 En cada iteración, el programa comprueba si i es múltiplo de 2.
 El contador se modifica sólo si la variable de control i es múltiplo de 2.
 El contador va aumentando de uno en uno.
 Antes del bucle se debe dar un valor inicial al contador (en este caso, 0)

Testigo

Se entiende por testigo una variable que indica simplemente si una condición se ha
cumplido o no. Es un caso particular de contador, pero se suele hacer con variables
lógicas en vez de numéricas (en este caso, la variable que hace de testigo es la
variable encontrado):
Ejemplo de testigo

print("Comienzo")
encontrado = False
for i in range(1, 6):
if i % 2 == 0:
encontrado = True
if encontrado:
print(f"Entre 1 y 5 hay al menos un múltiplo de 2.")
else:
print(f"Entre 1 y 5 no hay ningún múltiplo de 2.")

Comienzo

Entre 1 y 5 hay al menos un múltiplo de 2.

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.

Ejemplo de testigo - Paso final

print("Comienzo")
encontrado = False
for i in range(1, 6):
if i % 2 == 0:
encontrado = True
if encontrado:
print(f"Entre 1 y 5 hay al menos un múltiplo de 2.")
else:
print(f"Entre 1 y 5 no hay ningún múltiplo de 2.")

Comienzo

Entre 1 y 5 hay al menos un múltiplo de 2.

A continuación se ejecuta el bloque dentro del if.


Imprime el párrafo final indicando que entre el 1 y el 5 hay al menos un múltiplo de 2.

Detalles importantes:
 En cada iteración, el programa comprueba si i es múltiplo de 2.
 El testigo se modifica la primera vez que la variable de control i es múltiplo de 2.
 El testigo no cambia una vez ha cambiado.
 Antes del bucle se debe dar un valor inicial al testigo (en este caso, False)

Acumulador
Se entiende por acumulador una variable que acumula el resultado de una operación. El
ejemplo siguiente es un ejemplo de programa con acumulador (en este caso, la variable
que hace de acumulador es la variable suma):
Ejemplo de acumulador

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
suma = suma + i
print(f"La suma de los números de 1 a 4 es {suma}")

Comienzo

La suma de los números de 1 a 4 es 10

Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.

Detalles importantes:
 El acumulador se modifica en cada iteración del bucle (en este caso, el valor de i se
añade al acumulador suma).
 Antes del bucle se debe dar un valor inicial al acumulador (en este caso, 0)

También podría gustarte