Un bucle es una parte de código que se ejecuta mientras ocurre una determinada condición, o hasta que dicha condición deja de cumplirse.
Uno de los bucles más utilizados es el bucle for:
for variable in range (inicio, fin, salto) El código que viene a partir de esta instrucción comienza asignando a variable el valor indicado en el parámetro inicio y finaliza justo antes de llegar al parámetro fin (el parámetro fin nunca estará incluido).
El parámetro salto es opcional. Indica que la secuencia saltará de un valor a otro según lo indicado en dicho parámetro.
Todos los parámetros deben de tener valor de número entero.
for mivalor in range (3, 7):
print(mivalor * 12)Resultado:
36
48
60
72El primer valor tomado por la variable mivalor es 3, y el último es 6.
Si se indica un solo parámetro, se tomará como primer valor el 0.
for mivalor in range (4):
print(mivalor * 12)El primer valor será el 0 y el último el 3.
0
12
24
36A continuación veremos que el primer valor será el 2 y el último el 14. El 17 no entrará debido a que es su límite superior (el que nunca entra)
for ahorasalto in range ( 2, 17, 3):
elcuadrado = ahorasalto**2
print(elcuadrado)Resultado:
4
25
64
121
196Cualquiera de los parámetros de range ( ) puede ser también un número negativo, pero debemos tener en cuenta:
- Si el tercer parámetro es positivo, el primer parámetro debe ser siempre menor que el segundo. En caso contrario el bucle no se ejecutará ni una sola vez.
- Si el tercer parámetro es negativo, el primer parámetro debe de ser siempre mayor que el segundo. Si no lo es, el bucle no se ejecutará.
- Si no existe tercer parámetro, implícitamente toma el valor “+1”
for k in range (-2,-20,-3):
print(k*10)Resultado:
-20
-50
-80
-110
-140
-170for / break Si dentro de una instrucción for, necesitamos interrumpir la ejecución del bucle completo, podemos usar la instrucción break. Esta instrucción nos enviará fuera del bucle, aunque no se haya terminado de ejecutar.
from random import randint
numero=randint(1,5)
intento=0
for k in range(0,10):
elegido=randint(1,5)
intento+=1
if elegido==numero:
print("El número secreto es el: ",numero)
print("Lo he acertado en el intento: ",intento)
break
else:
print("El número ",elegido,"no es el secreto.")Posible ejecución del código:
El número 5 no es el secreto.
El número 3 no es el secreto.
El número 4 no es el secreto.
El número 2 no es el secreto.
El número 2 no es el secreto.
El número secreto es el: 1
Lo he acertado en el intento: 6for / else También existe la posibilidad, de añadir un bloque else:
Este bucle else, se ejecutaría si el bucle for llega hasta el final y concluye su ejecución. Pero no se ejecuta si se sale del bucle con una instrucción break. También se ejecutaría si el bucle no se llegase a ejecutar ni una sola vez; por ejemplo, por ser el primer argumento de range mayor que el segundo y no existir tercer argumento negativo.
Explicado de otra manera, queda a la expectativa de que el ciclo finalice (o no empiece). Si no finaliza, sino que se anticipa la salida del bucle con break, no se ejecuta.
from random import randint
numero=randint(1,5)
intento=0
for k in range(0,3):
elegido=randint(1,5)
intento+=1
if elegido==numero:
print("El número secreto es el: ",numero)
print("Lo he acertado en el intento: ",intento)
break
else:
print("El número ",elegido,"no es el secreto.")
else:
print("Los siento. No he acertado después de 3 intentos.")
Posible ejecución:
El número 2 no es el secreto.
El número 5 no es el secreto.
El número 1 no es el secreto.
Los siento. No he acertado después de 3 intentos.Otra posible salida:
El número 5 no es el secreto.
El número secreto es el: 2
Lo he acertado en el intento: 2No confundir el “else” que corresponde a la instrucción “if” (en este caso el primero) con el “else” que corresponde a “for” (en este caso el segundo). Vemos que aquí el segundo else (que va con “for”), solo se ejecuta en caso de que no se acierte el número antes y se abandone el bucle con break).
for / continue Nos puede interesar que en un punto determinado del bucle for, no se ejecuten el resto de las sentencias dentro del bucle, y que vuelva al inicio de este para continuar con el siguiente número de la secuencia.
for k in range (0,20):
if k % 5==0:
continue
print(k,end="-")Resultado: 1-2-3-4-6-7-8-9-11-12-13-14-16-17-18-19-Este pequeño código nos muestra los números del 1 al 20, pero no tiene en cuenta los que son divisibles por 5.
Es muy importante recordar aquí una de las reglas de escritura en Python. Cuando estamos escribiendo un bucle, debemos de comenzar la línea con un tabulado hacia la derecha. Los entornos de programación nos facilitan mucho esta tarea de tabular y cuando no lo hacemos, nos lo suelen recordar.
Cada nuevo tabulado, se corresponde con un bucle o conjunto de sentencias determinadas. Cuando se acaba el bucle, se vuelve un tabulado hacia la izquierda para seguir de nuevo ejecutando el siguiente grupo de sentencias.
for variable in lista//conjunto//diccionario Con un bucle for podemos recorrer una lista de datos, un conjunto, o incluso un diccionario (en este último caso, recorreríamos sus claves).
lista_invitados=["Juan", "Pedro", "Miguel", "Ángel", "Pedro"]
for invitado in lista_invitados:
print (f"Bienvenido {invitado}.")El resultado será:
Bienvenido Juan.
Bienvenido Pedro.
Bienvenido Miguel.
Bienvenido Ángel.
Bienvenido Pedro.
