Saltar al contenido principal
InicioTutorialesPython

Tutorial de bucles en Python

Un completo tutorial de introducción a los bucles de Python. Aprende y practica los bucles while y for, los bucles anidados, las palabras clave break y continue, la función range ¡y mucho más!
Actualizado 11 sept 2024  · 22 min leer

gama Python

Los bucles son importantes en Python o en cualquier otro lenguaje de programación, ya que te ayudan a ejecutar un bloque de código repetidamente. A menudo te encontrarás con situaciones en las que necesitarás utilizar un fragmento de código una y otra vez, pero no querrás escribir la misma línea de código varias veces.

En este tutorial de bucles de Python cubrirás los siguientes temas :

  • El bucle while de Python: aprenderás a construir y utilizar un bucle while en aplicaciones de ciencia de datos. Lo harás repasando algunos retos de codificación interactivos.
  • A continuación, pasarás al bucle for: una vez más, aprenderás cómo puedes construir y utilizar un bucle for en un contexto de la vida real.
  • También aprenderás la diferencia entre utilizar un bucle while y un bucle for.
  • También el tema de los bucles anidados
  • Después, verás cómo puedes utilizar las palabras clavebreak y continue .
  • Diferencia entre las funciones xrange() y range()

Bucle While

El bucle while es uno de los primeros bucles que probablemente encontrarás cuando empieces a aprender a programar. Podría decirse que también es uno de los más intuitivos de entender: si piensas en el nombre de este bucle, comprenderás rápidamente que la palabra "while" tiene que ver con un "intervalo" o un "periodo de tiempo". Como ya sabrás a estas alturas, la palabra "bucle" se refiere a un trozo de código que se ejecuta repetidamente.

Con todo esto en mente, puedes entender fácilmente la siguiente definición del bucle while:

Un bucle while es un concepto de programación que, cuando se implementa, ejecuta un fragmento de código una y otra vez mientras una determinada condición sigue siendo cierta.

La definición anterior también destaca los tres componentes que necesitas para construir el bucle while en Python:

  • La palabra clave while;
  • Una afección que se transmite a True o False; Y
  • Un bloque de código que quieres ejecutar repetidamente

¡Eso es todo lo que hace falta!

Cómo hacer un bucle While en Python

Ahora que sabes lo que necesitas para construir un bucle while, lo único que te queda por hacer es ver un ejemplo de la vida real en el que se utilice el bucle while, ¡antes de empezar a hacer ejercicios por tu cuenta! Considera el siguiente ejemplo:

# Take user input
number = 2  

# Condition of the while loop
while number < 5 :  
    print("Thank you")
    # Increment the value of the variable "number by 1"
    number = number+1
Thank you
Thank you
Thank you

El ejemplo de código anterior es un bucle while muy sencillo: si lo piensas, los tres componentes sobre los que has leído antes están presentes: la palabra clave while, seguida de una condición que se traduce como True o False (number < 5) y un bloque de código que quieres ejecutar repetidamente:

print("Thank you")
number = number + 1

Si entras en detalle en el código anterior, verás que hay una variable number en la que se almacena un número entero 2. Como el valor de number es menor que 5, imprimes "Thank you" y aumentas en uno el valor de number. Mientras el valor de number siga siendo menor que 5, sigue ejecutando las dos líneas de código que contiene el bucle while:

"Thank you"
"Thank you"

Imprime "Gracias" dos veces más antes de que el valor de number sea igual a 5 y la condición ya no se evalúe a True. Como ahora la condición se evalúa como False, saldrás del bucle while y continuarás tu programa si contiene más código. En este caso, no hay más código, por lo que tu programa se detendrá.

El ejemplo anterior es un poco básico, también puedes incluir condicionales, o, en otras palabras, una condición if, para hacerlo aún más personalizado. Mira el siguiente ejemplo:

# Take user input
number = 2 

# Condition of the while loop
while number < 5 :  
    # Find the mod of 2
    if number%2 == 0:  
        print("The number "+str(number)+" is even")
    else:
        print("The number "+str(number)+" is odd")

    # Increment `number` by 1
    number = number+1
The number 2 is even
The number 3 is odd
The number 4 is even

Ahora, ¡a practicar!

Escribe una función collatz() que permita al usuario introducir un número entero en una variable llamada number. Si el número es par, debe imprimir el resultado de number/2. Si el número es impar, entonces collatz() debe imprimir y devolver 3 * number + 1. El programa debe seguir llamando a la función collatz() en el number hasta que devuelva un 1.

Ten en cuenta que esto es en realidad una implementación de la secuencia de Collatz, que en pocas palabras es un problema matemático en el que eliges un número y sigues haciendo los cálculos anteriores hasta que llegas a un resultado de 1.

A continuación encontrarás la solución:

def collatz(number):
    # Is the mod of 2 equal to 0?
    if number % 2 == 0:
        print(number // 2)
        return number // 2

    # If the mod of 2 isn't equal to 0, print `3 * number + 1`
    elif number % 2 == 1:
        result = 3 * number + 1
        print(result)
        return result

# Ask input from the user    
n = input("Give me a number: ")

# As long as `n` is not equal to `1`, run `collatz()`
while n != 1:
    n = collatz(int(n))
Give me a number: 5
16
8
4
2
1

Empieza a aprender Python gratis

Introducción a Python

BeginnerSkill Level
4
5.5M learners
Domina los fundamentos del análisis de datos con Python en sólo cuatro horas. Este curso online introducirá la interfaz de Python y explorará paquetes populares.
See DetailsRight Arrow

Bucle Forzado

Puedes abordar el bucle for del mismo modo que el bucle while. Como probablemente habrías esperado, el componente "for" de "bucle for" se refiere a algo que haces un determinado número de veces.

Si tienes en cuenta todo lo anterior, puedes definir fácilmente el bucle for como sigue:

Un bucle for es un concepto de programación que, cuando se implementa, ejecuta un fragmento de código una y otra vez "para" un determinado número de veces, basándose en una secuencia.

A diferencia del bucle while, no interviene activamente ninguna condición: sólo ejecutas un fragmento de código repetidamente durante un número de veces. En otras palabras, mientras que el bucle while sigue ejecutando el bloque de código que contiene sólo hasta que la condición es True, el bucle for ejecuta el código que contiene sólo durante un número determinado de veces. Este "número de veces" viene determinado por una secuencia o lista ordenada de cosas.

Dentro de un rato aprenderás más sobre la diferencia entre los bucles while y for, pero por ahora concéntrate en las siguientes piezas que necesitas para crear un bucle for:

  • La palabra clave for
  • Una variable
  • La palabra clave in
  • La función range(), que es una función incorporada en la biblioteca de Python para crear una secuencia de números
  • El código que quieres ejecutar repetidamente

Bucles For en Python

# Print "Thank you" 5 times
for number in range(5):
    print("Thank you")
Thank you
Thank you
Thank you
Thank you
Thank you

Como puedes ver, los componentes que has visto en la sección anterior vuelven a aparecer en este pequeño ejemplo de bucle for en Python: la palabra clave for, la variable number, la palabra clave in, la función range() y el código que quieres ejecutar varias veces, print("Thank you").

No es tan difícil, ¿verdad?

Consideremos otro ejemplo de bucle for, en el que utilizas dos variables para definir tu flujo de control:

languages = ['R', 'Python',  'Scala', 'Java', 'Julia']

for index in range(len(languages)):
   print('Current language:', languages[index])
Current language: R
Current language: Python
Current language: Scala
Current language: Java
Current language: Julia

Como puedes ver, inicias el bucle con la palabra clave for. A continuación, utiliza las variables index y languages, la palabra clave in y la función range() para crear una secuencia de números. Además, ves que en este caso también utilizas la función len(), ya que la lista languages no es numérica. El fragmento de código que quieres ejecutar repetidamente es una sentencia print, es decir, print('Current language :', languages[index]).

En el bucle anterior, quieres expresar que por cada índice del rango len(languages), quieres imprimir el lenguaje de programación de la ciencia de datos. Ahora bien, len(languages) es 5, por lo que la afirmación también podría reescribirse como:

for index in range(5):
    print('Current language:', languages[index])
Current language: R
Current language: Python
Current language: Scala
Current language: Java
Current language: Julia

Y esto, una vez más, ¡te da el mismo resultado!

Bucles While frente a For en Python

Volvamos una vez más al primer ejemplo de bucle while para determinar cuáles son exactamente las diferencias entre los bucles while y for. Ya has leído más arriba que la diferencia radica en la condición que interviene o no, pero ¿cómo se refleja esto en el código y cómo puedes tal vez cambiar entre las dos?

# Take user input
number = 2  

while number < 5 :
    print("Thank you")
    # Increment `number` by 1
    number = number+1
Thank you
Thank you
Thank you

Puedes utilizar el bucle for para imprimir la declaración "Gracias" de forma más controlada:

# Print "Thank you" 3 times
for number in range(3) :  
    print("Thank you")
Thank you
Thank you
Thank you

¿Ves lo fácil que ha sido convertir el bucle while en un bucle for equivalente?

¿Cómo funciona? Pues es muy sencillo.

En un bucle for, el número entero mencionado dentro de la función rango es el rango o el número de veces que el control necesita hacer un bucle y ejecutar el código de la cláusula del bucle for.

Ten en cuenta que la cuenta de la función range() empieza en 0 y no en 1. Eso significa que, en el ejemplo anterior, la cuenta debería ser como 0,1,2 y no 1,2,3. Así funciona el recuento de números en la memoria de un ordenador. Por tanto, al diseñar un bucle for, ten siempre en cuenta que tienes que considerar la cuenta de rango desde 0 y no desde 1.

Consejo: esto es lo mismo que ocurre con las listas en Python, por ejemplo. Si quieres saber más sobre las listas en Python, échale un vistazo al tutorial 18 preguntas más frecuentes sobre listas en Python de DataCamp.

Ahora bien, hay otra diferencia interesante entre un bucle for y un bucle while. Un bucle for es más rápido que un bucle while. Para entenderlo, tienes que ver el siguiente ejemplo.

import timeit

# A for loop example
def for_loop():
    for number in range(10000) :  
        # Execute the below code 10000 times
        sum = 3+4
        #print(sum)

timeit.timeit(for_loop)
267.0804728891719
import timeit

# A while loop example
def while_loop():
    i =0
    while i<10000:
        sum = 3+4
        #print(sum)
        i+=1

timeit.timeit(while_loop)
884.9233417965908

En el trozo de código anterior, tienes dos bucles con unas 10000 iteraciones. Ambos parecen iguales a primera vista, hasta que miras entre bastidores y comprendes cómo funcionan estos dos bucles. Pista: ¡la función timeit() te da una pista de cuál puede ser la diferencia!

Recuerda: todo el código Python se compila con un compilador C, lo que significa que el código que ves arriba se descompone primero en códigos de bytes y luego lo procesa el compilador C subyacente.

Cuando comienza la ejecución del bucle for del ejemplo anterior, el intérprete de Python habla con el compilador de C subyacente y crea un objeto lista de tamaño 10000. A continuación, llama a un iterador para que toque el índice de cada uno de los 10000 elementos de la lista.

En cambio, la ejecución del bucle while no crea ningún objeto lista. De hecho, el compilador C subyacente llama al operador booleano de comparación para la condición i<10000 9999 veces.

Ya te puedes imaginar que iterar sobre un objeto lista ya creado con 10000 elementos es más fácil para el compilador que realizar una operación booleana repetidamente durante 9999 veces, el rendimiento temporal de un bucle for es mejor que el de un bucle while. Esto se refleja claramente en el tiempo de ejecución: el tiempo que tarda en completarse el bucle for es mucho menor que el tiempo que necesita el bucle while para completarse.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgU2V0IGBmaWJfbm9gIHRvIDU1LCB0aGUgbnVtYmVyIHVudGlsIHdoZXJlIHlvdSB3YW50IHRvIHByaW50XG5maWJfbm8gPSA1NVxuXG4jIFNldCBgZmlyc3Rfbm9gIHRvIDBcbmZpcnN0X25vID0gMFxuXG4jIFNldCBgc2Vjb25kX25vYCB0byAxXG5zZWNvbmRfbm8gPSAxXG5cbiMgU2V0IHRoZSBjb3VudGVyIGBjb3VudGAgdG8gMCBcbmNvdW50ID0gMFxuXG4jIHdoaWxlIGxvb3AgdG8gcHJpbnQgdGhlIGZpYm9uYWNjaSBzZXJpZXMgdW50aWwgdGhlIGBmaWJfbm9gXG53aGlsZSBmaXJzdF9ubyA8PSBmaWJfbm86XG4gICAgICAgIyBQcmludCBgZmlyc3Rfbm9gXG4gICAgICAgcHJpbnQoZmlyc3Rfbm8pXG4gICAgICAgXG4gICAgICAgIyBGaWJvbm5hY2NpIG51bWJlclxuICAgICAgIG50aCA9IGZpcnN0X25vICsgX19fX19fX19fX1xuICAgICAgIFxuICAgICAgICMgdXBkYXRlIHZhbHVlcyBvZiBgZmlyc3Rfbm9gIGFuZCBgc2Vjb25kX25vYFxuICAgICAgIGZpcnN0X25vID0gX19fX19fX19fX19fXG4gICAgICAgc2Vjb25kX25vID0gX19fXG4gICAgICAgXG4gICAgICAgIyBTZXQgY291bnRlciBgY291bnRgICsxXG4gICAgICAgX19fX19fX19fXyIsInNvbHV0aW9uIjoiIyBTZXQgYGZpYl9ub2AgdG8gNTUsIHRoZSBudW1iZXIgdW50aWwgd2hlcmUgeW91IHdhbnQgdG8gcHJpbnRcbmZpYl9ubyA9IDU1XG5cbiMgU2V0IGBmaXJzdF9ub2AgdG8gMFxuZmlyc3Rfbm8gPSAwXG5cbiMgU2V0IGBz

¡Ahora prueba el bucle for! Ten en cuenta que debes especificar el intervalo de 0 a 11, ya que sólo quieres mostrar los números de la secuencia hasta el 55, que es el número 11 de la secuencia.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW5pdGlhbGl6ZSBgZmlyc3Rfbm9gIHRvIGAwYFxuZmlyc3Rfbm8gPSAwXG5cbiMgSW5pdGlhbGl6ZSBgc2Vjb25kX25vYCB0byBgMWBcbnNlY29uZF9ubyA9IDFcblxuIyBJbml0aWFsaXplIGBudW1iZXJzYFxubnVtYmVycyA9IF9fX19fX19fX19fXG5cbiMgRmluZCBhbmQgZGlzcGxheSBGaWJvbmFjY2kgc2VyaWVzXG5mb3IgbnVtIGluIF9fX19fX186XG4gICAgICAgICAgIGlmKG51bSA8PSAxKTpcbiAgICAgICAgICAgIyBVcGRhdGUgb25seSBgbnRoYFxuICAgICAgICAgICAgICAgICAgICAgIG50aCA9IF9fX1xuICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAjIFVwZGF0ZSB0aGUgdmFsdWVzIGBudGhgLCBgZmlyc3Rfbm9gIGFuZCBgc2Vjb25kX25vYFxuICAgICAgICAgICAgICAgICAgICAgIG50aCA9IGZpcnN0X25vICsgc2Vjb25kX25vXG4gICAgICAgICAgICAgICAgICAgICAgZmlyc3Rfbm8gPSBzZWNvbmRfbm9cbiAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRfbm8gPSBfX19fX19fX19fXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICMgUHJpbnQgYG50aGBcbiAgICAgICAgICAgcHJpbnQobnRoKSIsInNvbHV0aW9uIjoiIyBJbml0aWFsaXplIGBmaXJzdF9ub2AgdG8gYDBgXG5maXJzdF9ubyA9IDBcblxuIyBJbml0aWFsaXplIGBzZWNvbmRfbm9gIHRvIGAxYFxuc2Vjb25kX25vID0gMVxuICAgICAgICAgICBcbiMgSW5pdGlhbGl6ZSBgbnVtYmVyc2Bc

Bucles anidados

Como puedes observar en el ejemplo anterior, hay una condición if-else dentro del bucle while que te permite introducir más condiciones en tu código.

¡Aguanta!

Ésta no es la única forma en que puedes personalizar tu bucle. También puedes incluir algún bucle while más dentro de tu código existente y esto se conoce como bucle anidado. Puedes modificar el ejemplo anterior para incluir otro bucle while como el siguiente:

# Take user input
number = 2 

# condition of the while loop
while number < 5 :  
    # condition of the nested while loop    
    while number % 2 == 0: 
        print("The number "+ str(number)+" is even")

En el ejemplo anterior hay otro bucle while que está "anidado" dentro del bucle exterior, este bucle interior pone otra comprobación para ver si el number % (mod) 2 es 0.

En otras palabras, comprueba si el número es par e imprime la afirmación "El número es par".

Pero hay un truco: si te fijas bien, puedes ver que, al igual que en el código anterior, esta vez falta la declaración number=number+1. Como no estás incrementando el número de la variable en ningún sitio, el valor de la variable sigue siendo el mismo cada vez y el código entra en un bucle infinito. Eso significa que, una vez que entra en el bucle, nunca sale e imprime la declaración un número infinito de veces porque la variable number siempre se pondrá a 2. Este número es, por supuesto, menor que 5 y un número par.

Veamos ahora cómo sería un bucle for anidado:

# Print the below statement 3 times
for number in range(3) :  
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    # Inner loop
    for another_number in range(5):  
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
-------------------------------------------
I am outer loop iteration 0
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4
-------------------------------------------
I am outer loop iteration 1
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4
-------------------------------------------
I am outer loop iteration 2
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4

El código anterior es una versión modificada del primer ejemplo de bucle for. Observa cómo se utiliza un segundo bucle for dentro del bucle exterior.

Sigue adelante y ejecuta el código.

Verás que el control entra en el primer bucle for y el valor de la variable number se inicializa como 0. Se imprime la primera sentencia print, y luego el control entra en el segundo bucle for, donde el valor de la variable another_number se inicializa a 0. La primera sentencia print del segundo bucle for se imprime una vez.

Ahora, el control vuelve al bucle for interno una vez más y el valor de another_number se inicializa de nuevo al siguiente número entero, seguido de la impresión de la declaración dentro de la función print().

El proceso anterior continúa hasta que el control ha atravesado el final de la función range(), que en este caso es 5, y entonces el control vuelve al bucle exterior, inicializa la variable number con el siguiente número entero, imprime la sentencia dentro de la función print(), visita el bucle interior y repite todos los pasos anteriores hasta atravesar la función range().

Este viaje del control desde el bucle exterior, pasando por el bucle interior y volviendo al bucle for exterior continúa hasta que el control ha recorrido todo el rango, que en tu caso es 3 veces.

Ahora que ya has leído algunas explicaciones sobre los bucles anidados, ¡es hora de que empieces tú también! Escribe un programaaltPythonalt para construir el siguiente patrón, utilizando un bucle for anidado: bucles Python

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW5pdGlhbGl6ZSB0aGUgZmlyc3QgZml2ZSByb3dzXG5uID0gX1xuXG4jIFN0YXJ0IHRoZSBsb29wIHRvIHByaW50IHRoZSBmaXJzdCBmaXZlIHJvd3NcbmZvciBpIGluIHJhbmdlKF8pOlxuICAgIGZvciBqIGluIHJhbmdlKGkpOlxuICAgICAgICBwcmludCgnKiAnLCBlbmQ9XCJcIilcbiAgICBwcmludCgnJylcblxuIyBTdGFydCB0aGUgbG9vcCB0byBwcmludCB0aGUgcmVtYWluaW5nIHJvd3MgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBzdGFyc1xuZm9yIGkgaW4gcmFuZ2UobiwwLC0xKTpcbiAgICBmb3IgaiBpbiByYW5nZShfKTpcbiAgICAgICAgcHJpbnQoJyogJywgZW5kPVwiXCIpXG4gICAgcHJpbnQoJycpIiwic29sdXRpb24iOiIjIEluaXRpYWxpemUgdGhlIGZpcnN0IGZpdmUgcm93c1xubiA9IDVcblxuIyBTdGFydCB0aGUgbG9vcCB0byBwcmludCB0aGUgZmlyc3QgZml2ZSByb3dzXG5mb3IgaSBpbiByYW5nZShuKTpcbiAgICBmb3IgaiBpbiByYW5nZShpKTpcbiAgICAgICAgcHJpbnQoJyogJywgZW5kPVwiXCIpXG4gICAgcHJpbnQoJycpXG5cbiMgU3RhcnQgdGhlIGxvb3AgdG8gcHJpbnQgdGhlIHJlbWFpbmluZyByb3dzIGluIGRlY3JlYXNpbmcgb3JkZXIgb2Ygc3RhcnNcbmZvciBpIGluIHJhbmdlKG4sMCwtMSk6XG4gICAgZm9yIGogaW4gcmFuZ2UoaSk6XG4gICAgICAgIHByaW50KCcqICcsIGVuZD1cIlwiKVxuICAgIHByaW50KCcnKSIsInNjdCI6IkV4KCkuaGFzX2VxdWFs

break y continue Keywords: Crear bucles infinitos

Puedes utilizar break y continue en cualquier bucle que crees. Estas palabras clave no se limitan a romper bucles infinitos intencionados, pero deben utilizarse con cuidado. Ambas palabras clave hacen que sea más difícil para los demás -incluido tú mismo dentro de un par de meses cuando vuelvas a mirar tu código- comprender el flujo de control en el bucle y dónde termina la condición. Además, no necesitas utilizar las palabras clave break y continue: como has visto hasta ahora, ¡lo hacías perfectamente sin ellas!

Sin embargo, en algunos casos, puede ser más claro escribir bucles infinitos intencionados en lugar de los tradicionales bucles for y while que has visto hasta ahora. Por supuesto, ¡en esos casos se fomenta el uso de estas palabras clave!

Romper y continuar bucles While en Python

Afortunadamente, hay una forma de salir de la situación anterior de bucle infinito y es utilizando la palabra clave break.

# Take user input
number = 2 

# Condition of the while loop
while number < 5 :  
    # condition of the nested while loop
    while number % 2 == 0:  
        print("The number "+str(number)+" is even")
        break

    number+=1

Cuando ejecutas el código anterior ya no entra en un bucle infinito.

"¡Qué es esta brujería!", gritas. - Yo te digo que te relajes, que no es brujería.

Lo que ocurre es que cuando el control encuentra la palabra clave break entiende que tiene que salir del bucle (bucle interno en este caso) y ejecuta la siguiente línea de código. Por lo tanto, sale del bucle while interno y pasa al bucle externo y sigue haciendo lo de siempre hasta que se cumpla la condición del bucle while externo.

Debes tener en cuenta que debe existir una línea de código después de la palabra clave break o, de lo contrario, no tendrá ningún efecto. Intenta eliminar la línea de código después de la palabra clave break en el ejemplo anterior y luego ejecuta el código.

¿Y si introduces a hurtadillas la palabra clave continue después de la declaración break? Puedes seguir el código que aparece a continuación:

# Take user input
number = 2 

while number < 5 :
    while number % 2 == 0: 
        print("The number "+str(number)+" is even")
        break

    continue

    number+=1

El código anterior es una versión ligeramente modificada del ejemplo de la palabra clave break.

Cuando ejecutes el código anterior, volverás a encontrarte con un bucle infinito. Antes de que empieces a tirarte de los pelos por la frustración, míralo más de cerca. Verás que hay una palabra clave continue después de la pausa. Lo que hace la palabra clave continue es que transfiere el control de nuevo al bucle más externo incluso antes de que se incremente la variable number y por eso el código entra en un bucle infinito.

Romper y continuar bucles For

¿Y si no quisieras ejecutar el bucle for interno del ejemplo anterior para todo el rango? Puedes utilizar una sentencia break de forma similar a como lo has hecho en el caso del bucle while.

# Print the below statement 3 times
for number in range(3) : 
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    for another_number in range(3):
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
        break

En el ejemplo anterior, la palabra clave break después del bucle interno indica al control que salga del bucle interno, tras lo cual el control vuelve al bucle externo.

Ejecuta el siguiente código de ejemplo:

# Print the below statement 3 times
for number in range(3) :  
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    continue
    for another_number in range(3):
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
        break

En el código anterior sólo se ejecuta el bucle exterior y el control ni siquiera toca el bucle interior.

"¿Por qué?", preguntas.

Echa un vistazo más de cerca al código. Hay una palabra clave continue justo después de la segunda sentencia print en el bucle exterior. Lo que hace es que indica al control que salte de nuevo al bucle for exterior y empiece de nuevo y por eso el control nunca toca el bucle interior.

A diferencia del bucle while, no necesitas un trozo de código después de la palabra clave break en el bucle for. Un bucle break solo funcionará bien dentro de un bucle for.

range() frente a xrange()

Estas dos funciones son similares entre sí, pero si utilizas Python 3, sólo tendrás disponible la función range(). En Python 3.x, la función xrange() pasa a llamarse range(). Esto significa que si intentas utilizar la función xrange() con Python 3, obtendrás el error NameError: name 'xrange' is not defined.

Para entender en qué se parecen estas dos funciones, considera el siguiente ejemplo:

# Print the below statement 3 times
for number in range(5,10,2) :  
    print("I am number : "+str(number))
I am number : 5
I am number : 7
I am number : 9

Al ejecutar el código anterior, verás cómo el valor de la variable number se salta por un factor de 2, y eso es debido a los parámetros de la función range().

El primer parámetro de esta función es el parámetro de inicio. Ese es el punto a partir del cual el control empieza a contar. El segundo parámetro es el parámetro de parada, que es el punto en el que debe detenerse el control, y el último parámetro es la función de paso, que define el factor por el que debe saltar el control mientras cuenta.

Así, en el caso anterior, el control empieza en 5 y luego recorre el bucle hasta 9, añadiendo 2 en cada cuenta. Esto significa 5, 5+2=7, 7+2=9.

Has aprendido cómo se utiliza la función range() para definir el número de veces que tu código tiene que hacer un bucle. Ahora, en Python 2.x, también encontrarás otra forma de hacerlo y es con la función xrange(). Ejecuta el código siguiente:

# Print the below statement 3 times
for number in xrange(10) :  
    print("I am number : "+str(number))
I am number : 0
I am number : 1
I am number : 2
I am number : 3
I am number : 4
I am number : 5
I am number : 6
I am number : 7
I am number : 8
I am number : 9

¿Qué diferencia has visto en la salida del código anterior frente a la salida del código sin la función xrange()? ¿No hay diferencia?

Así es. No verás ninguna diferencia en la salida del código.

Entonces, ¿por qué deberías utilizar la función xrange()? Llegarás a esto un poco más adelante en el tutorial. Primero ejecuta el código siguiente:

print(xrange(10))
print(range(10))
xrange(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Puedes ver que en la salida del código anterior, hay una diferencia en la salida de ambas sentencias de impresión. En la sentencia print, que contiene la función xrange(), se imprime el objeto de la función xrange(). Esto es diferente en la sentencia print que tiene la función range(): allí, obtienes una lista de enteros del 0 al 9.

En esto consiste exactamente la diferencia entre la función range() y la función xrange().

Cuando defines la función range(), se almacena en la RAM una lista de toda la gama y se te presenta. Sin embargo, cuando defines la función xrange(), no se almacena una lista en la memoria. En su lugar, la función xrange() genera enteros en todo el rango cuando lo necesitas. De este modo, la función xrange() ayuda a conservar la memoria en sistemas con escasez de recursos.

Perfecciona tus habilidades con Python

Enhorabuena, has llegado al final de este tutorial. Ahora que has aprendido a utilizar bucles en Python, vete a practicar. Cuanto más practiques, ¡mejor!

Temas

Cursos de Python relacionados

Course

Introduction to Python

4 hr
5.7M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

tutorial

Tutorial de bucles For en Python

Aprenda a implementar bucles For en Python para iterar una secuencia, o las filas y columnas de un dataframe pandas.
Aditya Sharma's photo

Aditya Sharma

5 min

tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

tutorial

Tutorial de Iteradores y Generadores de Python

Explore la diferencia entre Iteradores y Generadores de Python y aprenda cuáles son los mejores para usar en diversas situaciones.
Kurtis Pykes 's photo

Kurtis Pykes

10 min

tutorial

Tutorial de cadenas en Python

En este tutorial, aprenderás todo sobre las cadenas de Python: trocearlas y encadenarlas, manipularlas y darles formato con la clase Formatter, cadenas f, plantillas y ¡mucho más!
Sejal Jaiswal's photo

Sejal Jaiswal

16 min

tutorial

Tutorial de comprensión del diccionario Python

¡Aprende todo sobre la comprensión de diccionarios en Python: cómo puedes utilizarla para crear diccionarios, para sustituir los for loops (anidados) o las funciones lambda por map(), filter() y reduce(), ...!
Sejal Jaiswal's photo

Sejal Jaiswal

14 min

tutorial

Tutorial de list index() de Python

En este tutorial, aprenderás exclusivamente sobre la función index().
Sejal Jaiswal's photo

Sejal Jaiswal

6 min

See MoreSee More