0% encontró este documento útil (0 votos)
11 vistas

3 Bucles Python

Cargado por

rojassoyyo
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas

3 Bucles Python

Cargado por

rojassoyyo
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Link: https://www.bigbaydata.

com/ejercicios-de-bucles-en-python/

Objetivos
Entender el uso de range()
Principios de la estructura del for
El for iterable
El uso de While
While vs For: Breve análisis y cuando usar cada una
Errores comunes

Bucle For

Tanto el for como el while son estructuras, por eso, deberíamos ir


familiarizándonos a los : .

En el caso del for, comunmente buscaremos definir un inicio y un criterio de parada. En


general, podemos utilizar la función range() que acompaña a for. Fíjate, para aprender
como funciona range() podemos jugar con print y hacer unas pruebas:

In [ ]: print(range(5)) # Si no colocamos nada, empieza en 0.

In [ ]: # For tiene la particularidad de ir desde 0 hasta N - 1, siendo N el número que

for i in range(5):
print("Iteración", i)
# El código print() es ejecutado varias veces, donde i pasa a valer, en distinta
# Una vez llega al valor máximo, sigue el código.

In [ ]: suma = 0
for i in range(1, 101):
#print(i)
suma += i # A esto lo llamamos sobrecarga. Es exactamente igual que hacer su
#print(suma, i)
print("La suma total es:", suma)

# Descomenta los print() para entender lo que está pasando... Juega a bajar el n

In [ ]: # Otro uso de range()...


for i in range(2, 20, 2): # Podemos ir saltando de 2 en 2 también...
print(i)

For iterable

Otro uso común hilado con los temas posteriores (Listas y Textos) es
utilizar el for con elementos iterables / colecciones. Por ahora, ejecútalo
y observa cómo se puede utilizar:

In [ ]: # Segundo uso típico de For: X pasa a ser cada elemento de dentro de 'cursos'.
# Igual que antes, comienza en el primer elemento y termina en el último:

cursos = ["IA", "Big Data", "SQL", "Python", "SEO"]


for x in cursos:
print(x)

Bucle While - Con ejemplo


While es una estructura repetitiva que se usa para la misma idea que el for: repetir
instrucciones.

Observa su funcionamiento, después reflexionaremos por qué hace falta:

In [ ]: contador = 1
# Los códigos se ejecutarán si es True la condición. Juega con contador a coloca
while contador <= 5:
print("Contador:", contador)
contador += 1

In [ ]: suma = 0
numero = 2
while numero <= 10:
suma += numero
numero += 2

print("La suma de números pares hasta 10 es:", suma)


# Como ves, igual que con for, el segundo nivel puede tener tantas líneas como q

¿Cómo funciona While?


Si estás comenzando, cuidado con while. Al principio, cuesta entender el
funcionamiento. Para practicarlo, las claves son principalmente 2:

1. El while funciona con condiciones ciertas o falsas. Se elaboran parecido a las


condicionales.
2. Debemos tener cuidado con los posibles bucles infinitos .

Haz lo siguiente:

Ve a https://www.online-python.com/ y pega este código. Si te gusta, puedes practicar


también ahí.

En esa web programaba con los alumnos las primeras veces, es fiable. Ejecútalo y verás lo
que sucede al de un rato. La web caerá...:

In [ ]: a = 1
while(True):
a += 1 # Es lo mismo que a = a + 1...
print(a)

Moraleja: Cuidado con los bucles while. Asegúrate de que la condición no se quede
siempre a cierto, sino, tendrás un efecto parecido al de arriba :)

While vs For: Breve análisis

Imaginemos un problema donde tenemos que evaluar 11 jugadores de una Base de


Datos. En ese caso, el número es conocido. Se usa for .
Imaginemos que queremos hacer una calculadora para que sea usado hasta que el
usuario teclee 'S'. Aquí, tenemos a while .
Imaginemos que buscamos diseñar el acceso con pin, donde el usuario tiene hasta 3
intentos. While nuevamente.

El While es diferente al for. En la práctica, es clave saber identificar si


deberíamos usar while o for .

Como conclusión, si tenemos claro cuántas veces queremos repetir un


código está for. Sino, si identificamos alguna condición o intuimos la
palabra hasta tendremos a While.

Errores más comunes


In [ ]: # 1. Bucle infinito.

# Ejemplo de bucle infinito


i = 0
while i < 5:
print(i)
# Olvidamos incrementar 'i'
# Solución: Asegúrate de actualizar la variable de control. Con for no tendrás e
i = 0
while i < 5:
print(i)
i += 1 # Incrementamos 'i'

In [ ]: # 2. Condición nunca verdadera (no se ejecuta while nunca)

# Ejemplo de condición nunca verdadera


i = 10
while i < 5:
print(i)
i += 1
# Solución: Verifica las condiciones iniciales.
i = 0
while i < 5:
print(i)
i += 1

In [ ]: #3. Usar el for de iteración y eliminar elementos de la lista

# Ejemplo de modificar la lista durante la iteración


numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
numbers.remove(num)
print(numbers) # Salida inesperada: [1, 2, 4, 5]
# Solución: Iterar sobre una copia de la lista.
numbers = [1, 2, 3, 4, 5]
for num in numbers[:]: # Usar una copia de la lista
if num == 3:
numbers.remove(num)
print(numbers) # Salida correcta: [1, 2, 4, 5]

Ejercicios resueltos
In [ ]: #Ej1.

for i in range(1, 10 + 1):


print(i)

In [ ]: #Ej2.

# 5! = 5 * 4 * 3 * 2 * 1
n = int(input('Dame el valor del factorial a calcular...'))
base = 1 #Colocamos a 1 porque algo * 1 es ese mismo número.
for i in range(1, n + 1):
base *= i
print(base)

In [ ]: #Ej3.

frase = input('Dame una frase...')


frase = frase.split(' ')
for p in frase:
print(p)
print( len(frase) )
In [ ]: #Ej4.

num = 1
num1 = 0
num2 = 1
n = int(input('Dime el valor de N...'))

for i in range(0, n):


print(num)
num = num1 + num2
num1 = num2
num2 = num

In [ ]: #Ej5.

num = int(input('Dime el número de * que quieres...'))

for i in range(0, num + 1):


print(i * '*')

In [ ]: #Ej6.

op = int(input('Dame un número... - {-1 para finalizar}'))


sum = 0
while(op != -1): #Fíjate en el juego: 1. Buscamos colocar la condición de repeti
sum += op
print(sum)
op = int(input('Dame un número... - {-1 para finalizar}')) #Al final, volvem

In [ ]: #Ej7.

PIN_SECRETO = '1234' #Este tipo de variables se consideran globales. Como no sue


# Otros ejemplos: URL_BASEDATOS, DNI_CLIENTE...

pin = input('Dame el PIN...')


intentos = 0
#Los 3 intentos máximos...
while(pin != PIN_SECRETO and intentos < 2): # El bucle básicamente fuerza a rein
intentos += 1
print('Pin incorrecto. Intentos:',intentos,', Vuelve a intentarlo...')
pin = input('Dame el PIN...') #Punto4: Aquí termina el bucle. Si la condició

# Según qué ha pasado...


if(pin==PIN_SECRETO):
print('Desbloquear Pantalla')
else:
print('Llamando a @policia...')

In [ ]: #Ej8.

import math

# Pedir el primer cateto


cateto1 = float(input("Introduce el valor del primer cateto (debe ser mayor a 0)
while cateto1 <= 0:
print("El valor debe ser mayor a 0. Inténtalo de nuevo.")
cateto1 = float(input("Introduce el valor del primer cateto (debe ser mayor
# Pedir el segundo cateto
cateto2 = float(input("Introduce el valor del segundo cateto (debe ser mayor a 0
while cateto2 <= 0:
print("El valor debe ser mayor a 0. Inténtalo de nuevo.")
cateto2 = float(input("Introduce el valor del segundo cateto (debe ser mayor

# Calcular la hipotenusa
hipotenusa = math.sqrt(cateto1**2 + cateto2**2)

# Mostrar el resultado
print("La hipotenusa es:",hipotenusa)

In [ ]: #Ej9.

import math

operacion = input('Operación? Teclea 1, 2, 3 ó SAL') #recogemos el valor de la o


resultado = 0 # Dejamos la variable resultado inicializada para ser utilizada hi
while(not operacion=='SAL'):
inputA = float(input('Dame el valor de A'))
inputB = float(input('Dame el valor de B'))
if(operacion=='1'):
resultado = math.sqrt(inputA+inputB)
print(resultado)
elif(operacion=='2'):
if(not inputB == 0): #Solo si no divide entre 0...
resultado = inputA/inputB
print(resultado)
else:
print('Error')
else: #El último caso es la operación 3...
resultado = (inputA+inputB)/2.5
print(resultado)
operacion = input('Operación? Teclea 1, 2, 3 ó SAL') #recogemos el valor de
print('Saliendo del programa...')

In [ ]: #Ej10.

#Estadisticas de cada personaje: Ataque y Defensa


# El código más adelante verás que se puede mejorar. La idea es seguir asentando
import random, time
# Se usan dos librerías como novedad: una es para generar números aleatorios. La

vidaA, ataqueA = 100, 20


vidaB, ataqueB = 100, 20

turno = random.randint(-1,1) #Se utilizan -1 o 1 para establecer quien empieza.

while(vidaA > 0 and vidaB > 0): #Bucle de combate por turnos...
if(turno == 1): #Si 1 entonces ataque de B que resta a la vida de A.
vidaA = vidaA - ataqueB
else:
vidaB = vidaB - ataqueA
turno = turno * (-1) # 1 * (-1) = -1. Cambio de turno en el bucle. #Siguient
print('Vida de A:',vidaA, 'Vida de B:',vidaB)
time.sleep(2) #El sistema se detiene 2 segundos para ver el progreso del com
# Y así hasta que no sea cierto que ambos estén vivos. Todo lo anterior está
if(vidaA > 0):
print('Ha ganado A')
else:
print('Ha ganado B')

También podría gustarte