while
[1]¶a = 1
b = 5
while a <= b: # mientras se cumpla la condición
print(a) # imprime los números del 1 al 10
a += 1 # equivale a la expresión: a = a + 1 (contador)
1 2 3 4 5
for
¶La gran diferencia entre un bucle for
y un bucle while
es la siguiente:
En un bucle for
se conoce a priori el número de iteraciones que se han de realizar y
en un bucle while
el número de ciclos se producirá de forma continua hasta que se deje de cumplir la condición.
Por lo tanto en un bucle while
algo tiene que cambiar que haga que la condición deje de cumplirse.
La siguiente estructura es un bucle sin fin.
Finalmente detendremos su ejecución de forma manual o dará un error y se interrumpirá su ejecución.
a = 1
# BUCLE INFINITO
'''
while True: # siempre se cumple
print(a) # imprime continuamente valores de a hasta que pulsemos CONTROL+C
a += 1 # o bien, hasta que reestablezcamos el Kernel en Jupyter Notebook
'''
if
... break
¶Para salir del bucle añadimos un if
con un break
.
a = 1
while True:
print(a)
if a == 5: break
a += 1
1 2 3 4 5
a=0
while a >= 0:
a += 1
print("El valor de a es: ", a)
if a == 5:
print("El valor de a alcanzó el límite")
break
print("\tAún no hemos llegado al final")
print("Fin del programa")
El valor de a es: 1 Aún no hemos llegado al final El valor de a es: 2 Aún no hemos llegado al final El valor de a es: 3 Aún no hemos llegado al final El valor de a es: 4 Aún no hemos llegado al final El valor de a es: 5 El valor de a alcanzó el límite Fin del programa
if
... continue
¶Para saltarnos una iteración del bucle añadimos un if
con un continue
.
Al llegar al continue
no se siguen ejecutando el resto de las líneas de código internas al while
que corresponden a esa iteración. Se salta a la siguiente iteración.
i = 0
while i < 5:
i += 1
if i == 3:
continue # cuando llega aquí no sigue ejecutando líneas y continúa con la siguiente iteración
print(i)
# Observe que falta el 3
1 2 4 5
else
¶Si se sale del bucle mediante una interrupción break
, la cláusula else no se ejecutará.
i = 1
while i <= 5:
print(i)
i += 1
else:
print("Hemos llegado a 5") # solo se ejecuta una vez que el bucle se ha completado
print("Fin del programa")
1 2 3 4 5 Hemos llegado a 5 Fin del programa
i = 1
while i <= 5:
print(i)
if i == 3:
#print("El bucle se rompe en i=",i)
break
i += 1
else:
print("Hemos llegado a 6") # no llega a ejecutarse debido al break
print("Fin del programa")
1 2 3 Fin del programa
Crear un caso donde se use un bucle while
en el que podamos usar las sentencias break
, continue
, else
.
Solicitar al usuario que introduzca un número entre 20 y 99, ambos incluidos. Si el número no está en ese rango se seguirá pidiendo otro número.
Con el número introducido comprobaremos si se encuentra en la lista primos.
primos = [23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
primos = [23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
while True: # estamos preguntando continuamente mientras n no sea válido
n = int(input('Indique un número entre 20 y 99 '))
if 20 <= n <= 99: break # se sale cuando n está en el rango válido
if n in primos: # comprobamos si el número n está en la lista primos
print(n, 'si está en la lista de primos')
else:
print(n, 'no está en la lista de primos')
Indique un número entre 20 y 99 97 97 si está en la lista de primos