Los bucles for y while de Python

curso de Python

Pasamos ya a ver los bucles for y while de Python.

Los bucles sirven para realizar acciones de manera repetida en los programas. Empecemos por el bucle for de Python.

El bucle for de Python

El bucle for se utiliza para iterar una secuencia como listas, tuplas, strings, etc. entre otras muchas utilidades.

Empecemos en este capítulo por algo muy sencillo. Imprimir automáticamente 10 números.

Escribimos for un nombre de variable (normalmente en Python se pone «i» o «x» en los bucles) y le damos un rango con range().

for i in range(10):
    print(i)

Resultado en la consola

0
1
2
3
4
5
6
7
8
9

En la primera ejecución, el bucle vale 0 (primer valor que da el range).

La segunda vale 1 y así hasta ejecutarse 10 veces.

Cuando «i» vale 10, ya no se ejecuta y no se muestra en la salida.

El método range() para bucles

El método range() posee más de un argumento. Aquí tienes los tres que vamos a utilizar:

Argumento de range()Descripción del argumento
startEspera un valor integer. Dicho valor, indica el comienzo del rango.
stopTambién espera un valor integer. Indica el final del rango.
stepEspera un valor integer. Indica la cantidad de incremento o decremento en el rango.

Si quieres añadir un rango diferente, añade un segundo argumento al método range(), por ejemplo, que se ejecute del valor 5 al 10:

for i in range(5, 11):
    print(i)

Resultado en la consola

5
6
7
8
9
10

Probemos con el argumento step. Este es el que nos permite cambiar el incremento o decremento en el rango.

for i in range(5, 30, 3):
    print(i)

Resultado en la consola

5
8
11
14
17
20
23
26
29

El rango ha empezado en el valor 5 (start). Llega hasta el 30 (stop). Los incrementos los da de 3 en 3 (step).

El siguiente valor que se imprimiría después del 29, es el 32. Al estar fuera de rango (30), no se imprime.

Iterar listas Python con bucles

Podemos utilizar los bucles para iterar elementos iterables.

Las listas o tuplas lo son, por lo tanto, podemos realizar cosas repetitivas con pocas líneas:

Gracias al bucle, podemos imprimir separadamente cada elemento de la lista con solo dos líneas. Una para expresar el bucle y la condición de salida y otra para el print() repetitivo.

Lista de países

paises = ["Afghanistan","Albania","Algeria",
"Andorra","Angola","Anguilla",
"Antigua and Barbuda",
"Argentina","Armenia",
"Aruba","Australia","Austria",
"Azerbaijan","Bahamas","Bahrain",
"Bangladesh","Barbados","Belarus",
"Belgium","Belize","Benin","Bermuda",
"Bhutan","Bolivia","Bosnia & Herzegovina",
"Botswana","Brazil","British Virgin Islands",
"Brunei","Bulgaria","Burkina Faso","Burundi",
"Cambodia","Cameroon","Cape Verde",
"Cayman Islands","Chad","Chile","China",
"Colombia","Congo","Cook Islands",
"Costa Rica","Cote D Ivoire","Croatia",
"Cruise Ship","Cuba","Cyprus","Czech Republic",
"Denmark","Djibouti","Dominica",
"Dominican Republic","Ecuador","Egypt",
"El Salvador","Equatorial Guinea",
"Estonia","Ethiopia","Falkland Islands",
"Faroe Islands","Fiji","Finland","France",
"French Polynesia","French West Indies","Gabon",
"Gambia","Georgia","Germany","Ghana","Gibraltar",
"Greece","Greenland","Grenada","Guam","Guatemala",
"Guernsey","Guinea","Guinea Bissau","Guyana",
"Haiti","Honduras","Hong Kong","Hungary","Iceland",
"India","Indonesia","Iran","Iraq","Ireland",
"Isle of Man","Israel","Italy","Jamaica","Japan",
"Jersey","Jordan","Kazakhstan","Kenya","Kuwait",
"Kyrgyz Republic","Laos","Latvia","Lebanon",
"Lesotho","Liberia","Libya","Liechtenstein",
"Lithuania","Luxembourg","Macau","Macedonia",
"Madagascar","Malawi","Malaysia","Maldives",
"Mali","Malta","Mauritania","Mauritius","Mexico",
"Moldova","Monaco","Mongolia","Montenegro",
"Montserrat","Morocco","Mozambique","Namibia",
"Nepal","Netherlands","Netherlands Antilles",
"New Caledonia","New Zealand","Nicaragua","Niger",
"Nigeria","Norway","Oman","Pakistan","Palestine",
"Panama","Papua New Guinea","Paraguay","Peru",
"Philippines","Poland","Portugal","Puerto Rico",
"Qatar","Reunion","Romania","Russia","Rwanda",
"Saint Pierre & Miquelon","Samoa","San Marino",
"Satellite","Saudi Arabia","Senegal","Serbia",
"Seychelles","Sierra Leone","Singapore","Slovakia",
"Slovenia","South Africa","South Korea","Spain",
"Sri Lanka","St Kitts & Nevis","St Lucia",
"St Vincent","St. Lucia","Sudan","Suriname","Swaziland",
"Sweden","Switzerland","Syria","Taiwan","Tajikistan",
"Tanzania","Thailand","Timor L'Este","Togo","Tonga",
"Trinidad & Tobago","Tunisia","Turkey","Turkmenistan",
"Turks & Caicos","Uganda","Ukraine",
"United Arab Emirates","United Kingdom","Uruguay",
"Uzbekistan","Venezuela","Vietnam",
"Virgin Islands (US)","Yemen","Zambia","Zimbabwe"]

for i in paises:
    print(f'-{i}.')

Para no sacar un resultado tan largo aquí, te he dejado el código para que lo pruebes o puedes verlo en el vídeo.

Iterar strings con bucles en Python

Los strings también son elementos iterables. Cada caracter de un string es una posición que empieza a contar desde el 0. Por lo tanto, si es iterable, se puede iterar con un bucle. Lo haremos con «in» de nuevo.

nombre = "PC Máster"
 
for i in nombre:
    print(i)

Resultado en la consola

P
C

M
á
s
t
e
r

El uso de continue y condicionales en bucles de Python

Veamos el uso de continue junto con los condicionales dentro de los bucles.

Si has seguido el curso hasta aquí, sabrás de sobra como funciona este bucle.

colores = ['rojo', 'azul', 'verde', 'amarillo']
 
for i in colores:
    print(i)

Resultado en la consola

rojo
azul
verde
amarillo

Itera elemento por elemento en la lista. ¿Y si en un bucle quiero omitir algunas cosas?

Pues podemos combinar el poder de los condicionales junto con los bucles.

En el siguiente código, le digo que si el valor de «i» en algún momento es azul o es amarillo, que omita esa iteración gracias a continue. En caso contrario, se imprime el color. Por lo tanto, nos quedan las iteraciones de rojo y verde.

colores = ['rojo', 'azul', 'verde', 'amarillo']
 
for i in colores:
    if i == 'azul' or i == 'amarillo':
        continue
    else:
        print(i)

Resultado en la consola

rojo
verde

El uso de break en bucles de Python

Gracias a break en bucles, podemos romper la ejecución cuando queramos. Antes de que se cumpla la condición de salida.

Este bucle tendría que imprimir los valores de i, desde el 25 hasta el 50. Sin embargo, con el if le especifico que cuando «i» valga 30, que rompa la ejecución del bucle.

for i in range(25,51):
    print(i)
    if i == 30:
        break

Resultado en la consola

25
26
27
28
29
30

Else para bucles en Python

¿Sabías que else no es exclusivo solo de del condicional if?

Lo puedes utilizar como bloque extra para un bucle que va a realizar una acción determinada una vez termine la ejecución de dicho bucle.

for i in range(5):
    print(i)
else:
    print("Finalizó la ejecución del bucle.")

Resultado en la consola

0
1
2
3
4
Finalizó la ejecución del bucle.

Sin embargo, si utilizas un break y el bucle no finaliza según lo indicado en la expresión de salida, el bloque else es omitido:

for i in range(10):
    print(i)
    if i > 5:
        break
else:
    print("Finalizó la ejecución del bucle.")

Resultado en la consola

0
1
2
3
4
5
6

Por cierto, fíjate bien en la indentación. Este else pertenece al bucle, no al if.

He explicado el tema de la indentación anteriormente, sin embargo, cualquier duda sobre esto, déjamela en los comentarios, ya que es importante en Python.

No te pierdas todo el contenido de este curso y más cosas sobre Python.

Iterar varias listas a la vez con bucles anidados

Podemos iterar múltiples listas en conjunto gracias a los bucles anidados.

Aquí tienes un ejemplo:

objetos = ['balón', 'vehículo', 'serpiente']
colores = ['rojo', 'azul', 'verde', 'amarillo']
 
 
for i in objetos:
  for j in colores:
    print(i, j)

Resultado en la consola

balón rojo
balón azul
balón verde
balón amarillo
vehículo rojo
vehículo azul
vehículo verde
vehículo amarillo
serpiente rojo
serpiente azul
serpiente verde
serpiente amarillo

No importa que una lista tenga más o menos valores que la otra. Objetos tiene tres elementos y colores cuatro.

En la primera ejecución del bucle, i tiene el valor de balón.

A partir de ese valor, tengo otro bucle que itera toda la lista de colores, lo que nos da los valores balón, rojo, balón azul…

Una vez se acaba la ejecución del bucle anidado (j), sigue con la ejecución del bucle principal (i). «i» ahora tiene el valor de vehículo.

Volvemos otra vez a iterar toda la lista de colores. Así hasta terminar el bucle principal.

Puedes anidar más bucles dentro de más y más bucles, aunque esto requiere algo de práctica, ya que puede complicarse bastante si no dominas bien el tema de los bucles.

El bucle while de Python

Veamos ahora el segundo tipo de bucle que tiene Python, el bucle while.

Este se ejecutará mientras su condición se cumpla.

En el siguiente ejemplo puedes ver la estructura de este bucle:

i = 0
while i < 5:
  print(i)
  i += 1

Resultado en la consola

0
1
2
3
4

La variable «i» es el inicializador del bucle y está fuera de este. Empieza en el valor 0 o el que le pongamos.

Después de la palabra while, indicamos una condición de salida. Es decir, la condición para que se mantenga el bucle hasta que este se convierta en False.

Aparte del código que queramos poner, es importante especificar el incremento o decremento del bucle, de modo que podemos hacer que la condición sea False en algún momento. Si no hacemos esto correctamente, crearemos un bucle infinito por error.

Este se ejecuta una vez. En el print() de la primera vuelta del bucle, vale 0, después se incrementa y vale 1. Así hasta ser menor que 5, es decir 4.

En el bucle while se puede utilizar todo lo que hemos utilizado con el bucle for:

El Uso de continue con un bucle while de Python:

i = 0
while i < 5:
  i += 1
  if i == 2:
    continue
  print(i)

Resultado en la consola

1
3
4
5

Uso de break con un bucle while de Python:

i = 0
while i < 5:
  i += 1
  if i == 2:
    break
  print(i)

Resultado en la consola

1

else con un bucle while de Python:

i = 0
while i < 5:
  print(i)
  i += 1
else:
    print("Finalizó el bucle...")

Resultado en la consola

0
1
2
3
4
Finalizó el bucle…

Puedes hacer decrementos en lugar de incrementos.

En saltos de 1 o más al igual que con los incrementos.

i = 50
while i > 5:
  print(i)
  i -= 10

Resultado en la consola

50
40
30
20
10

Queda mucho que hacer con los bucles, pero hasta aquí la introducción a ellos. Seguiremos viendo más sobre ellos.

No te pierdas todo el contenido de este curso y más cosas sobre Python.

Los bucles for y while de Python

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll hacia arriba