Bucle for en Python

El bucle for en Python es una función de iteración. Si tienes un objeto de secuencia como una lista, puedes usar el bucle for para iterar sobre los elementos contenidos dentro de la lista.

La funcionalidad del bucle for no es muy diferente de lo que se ve en varios otros lenguajes de programación.

En este artículo, exploraremos el bucle for en Python en detalle y aprenderemos a iterar sobre diferentes secuencias, incluidas listas, tuplas y más. Además, aprenderemos a controlar el flujo del bucle usando las declaraciones break y continue.

Cuándo usar el bucle for

En cualquier momento que necesites repetir un bloque de código una cantidad fija de veces. Si no conoces la cantidad de veces que debe repetirse, utiliza en su lugar una declaración de “while loop”.

Sintaxis del bucle for en Python

La sintaxis básica del bucle for en Python se parece algo a la que se menciona a continuación.

for itarator_variable in sequence_name:
	Statements
	. . .
	Statements

Sintaxis detallada del bucle for en Python

  • La primera palabra de la declaración comienza con la palabra clave “for” que significa el inicio del bucle for.
  • Luego tenemos la variable del iterador que itera sobre la secuencia y puede ser usada dentro del bucle para realizar varias funciones
  • Lo siguiente es la palabra clave “in” en Python que indica a la variable del iterador que haga un bucle por los elementos dentro de la secuencia
  • Y finalmente, tenemos la variable de secuencia que puede ser una lista, una tupla, o cualquier otro tipo de iterador.
  • La parte de las declaraciones del bucle es donde puedes manipular la variable del iterador y realizar varias funciones

La cadena en Python es una secuencia de caracteres. Si dentro de alguna de tus aplicaciones de programación necesitas recorrer los caracteres de una cadena individualmente, puedes usar el bucle for aquí.

Así es como funcionaría para ti.

word="anaconda"
for letter in word:
	print (letter)

Salida:

a
n
a
c
o
n
d
a

La razón por la que este bucle funciona es porque Python considera una “cadena” como una secuencia de caracteres en lugar de mirar la cadena como un todo.

Usando el bucle for para iterar sobre una lista o tupla de Python

Las listas y tuplas son objetos iterables. Veamos cómo podemos iterar sobre los elementos dentro de estos objetos ahora.

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
	print (word)

Salida:

Apple
Banana
Car
Dolphin

Ahora, avancemos y trabajemos en iterar sobre los elementos de una tupla aquí.

nums = (1, 2, 3, 4)

sum_nums = 0

for num in nums:
    sum_nums = sum_nums + num

print(f'Sum of numbers is {sum_nums}')

# Salida
# La suma de los números es 10

Anidando bucles for en Python

Cuando tenemos un bucle for dentro de otro bucle for, se llama un bucle for anidado. Hay múltiples aplicaciones de un bucle for anidado.

Considera el ejemplo de lista anterior. El bucle for imprime palabras individuales de la lista. ¿Pero qué pasa si queremos imprimir los caracteres individuales de cada una de las palabras dentro de la lista en su lugar?

Aquí es donde funciona mejor un bucle for anidado. El primer bucle (bucle padre) recorrerá las palabras una por una. El segundo bucle (bucle hijo) recorrerá los caracteres de cada una de las palabras.

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
        # Este bucle está obteniendo la palabra de la lista
        print ("The following lines will print each letters of "+word)
        for letter in word:
                # Este bucle está obteniendo la letra para la palabra
                print (letter)
        print("") # Esta impresión se usa para imprimir una línea en blanco

Salida

A nested loop is structurally similar to nested if statements

Bucle for de Python con la función range()

El rango de Python es una de las funciones integradas. Cuando deseas que el bucle for se ejecute un número específico de veces, o necesitas especificar un rango de objetos para imprimir, la función de rango funciona realmente bien.

Al trabajar con range(), puedes pasar entre 1 y 3 argumentos enteros:

  • start indica el valor entero desde el cual comienza la secuencia, si no se incluye, entonces start comienza en 0
  • stop siempre es requerido y es el entero hasta el cual se cuenta pero no se incluye
  • step establece cuánto aumentar (o disminuir en el caso de números negativos) en la siguiente iteración, si se omite, entonces step se establece por defecto en 1

Considera el siguiente ejemplo donde quiero imprimir los números 1, 2 y 3:

for x in range(3):
    print("Printing:", x)
	
# Salida

# Impresión: 0
# Impresión: 1
# Impresión: 2

La función range también toma otro parámetro además del inicio y el fin. Este es el parámetro step. Le dice a la función range cuántos números omitir entre cada conteo.

En el siguiente ejemplo, he utilizado el número 3 como el paso y puedes ver que los números de salida son el número anterior + 3.

for n in range(1, 10, 3):
    print("Printing with step:", n)
	
# Salida

# Impresión con paso: 1
# Impresión con paso: 4
# Impresión con paso: 7

También podemos usar un valor negativo para nuestro argumento step para iterar hacia atrás, pero tendremos que ajustar nuestros argumentos start y stop en consecuencia:

for i in range(100,0,-10):
   print(i)

Aquí, 100 es el valor start, 0 es el valor stop, y -10 es el rango, por lo que el bucle comienza en 100 y termina en 0, disminuyendo en 10 en cada iteración. Esto ocurre en la salida:

Output
100 90 80 70 60 50 40 30 20 10

Cuando se programa en Python, los bucles for a menudo hacen uso del tipo de secuencia range() como sus parámetros para la iteración.

Declaración break con bucle for

La declaración break se utiliza para salir del bucle for prematuramente. Se utiliza para romper el bucle for cuando se cumple una condición específica.

Digamos que tenemos una lista de números y queremos verificar si un número está presente o no. Podemos iterar sobre la lista de números y si se encuentra el número, salir del bucle porque no necesitamos seguir iterando sobre los elementos restantes.

En este caso, usaremos la condición if else de Python junto con nuestro bucle for.

nums = [1, 2, 3, 4, 5, 6]

n = 2

found = False
for num in nums:
    if n == num:
        found = True
        break

print(f'List contains {n}: {found}')

# Salida
# La lista contiene 2: True

La declaración continue con bucle for

Podemos usar declaraciones continue dentro de un bucle for para omitir la ejecución del cuerpo del bucle for para una condición específica.

Digamos que tenemos una lista de números y queremos imprimir la suma de los números positivos. Podemos usar la declaración continue para omitir el bucle for para los números negativos.

nums = [1, 2, -3, 4, -5, 6]

sum_positives = 0

for num in nums:
    if num < 0:
        continue
    sum_positives += num

print(f'Sum of Positive Numbers: {sum_positives}')

Bucle for de Python con un bloque else

Podemos usar un bloque else con un bucle for de Python. El bloque else se ejecuta solo cuando el bucle for no es terminado por una declaración break.

Digamos que tenemos una función para imprimir la suma de los números solo si todos los números son pares.

Podemos usar la declaración break para terminar el bucle for si hay un número impar presente. Podemos imprimir la suma en la parte else para que se imprima solo cuando el bucle for se ejecute normalmente.

def print_sum_even_nums(even_nums):
    total = 0

    for x in even_nums:
        if x % 2 != 0:
            break

        total += x
    else:
        print("For loop executed normally")
        print(f'Sum of numbers {total}')


# esto imprimirá la suma
print_sum_even_nums([2, 4, 6, 8])

# esto no imprimirá la suma debido a un número impar en la secuencia
print_sum_even_nums([2, 4, 5, 8])

# Salida

# Bucle for ejecutado normalmente
# Suma de números 20

Bucles For usando Tipos de Datos Secuenciales

Las listas y otros tipos de secuencias de datos también se pueden aprovechar como parámetros de iteración en bucles for. En lugar de iterar a través de un range(), puedes definir una lista y iterar a través de esa lista.

Asignaremos una lista a una variable y luego iteraremos a través de la lista:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

En este caso, estamos imprimiendo cada elemento de la lista. Aunque usamos la variable shark, podríamos haber llamado a la variable con cualquier otro nombre de variable válido y obtendríamos la misma salida:

Output
hammerhead great white dogfish frilled bullhead requiem

La salida anterior muestra que el bucle for iteró a través de la lista e imprimió cada elemento de la lista por línea.

Las listas y otros tipos de datos basados en secuencias como cadenas y tuplas son comunes de usar con bucles porque son iterables. Puedes combinar estos tipos de datos con range() para agregar elementos a una lista, por ejemplo:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for item in range(len(sharks)):
   sharks.append('shark')

print(sharks)
Output
['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

Aquí, hemos agregado una cadena de marcador de posición 'shark' para cada elemento de la longitud de la lista sharks.

También puedes usar un bucle for para construir una lista desde cero:

integers = []

for i in range(10):
   integers.append(i)

print(integers)

En este ejemplo, la lista enteros se inicializa vacía, pero el bucle for llena la lista de la siguiente manera:

Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

De manera similar, podemos iterar a través de cadenas:

sammy = 'Sammy'

for letter in sammy:
   print(letter)
Output
S a m m y

Iterar a través de tuplas se hace en el mismo formato que iterar a través de listas o cadenas arriba.

Al iterar a través de un diccionario, es importante tener en cuenta la estructura clave : valor para asegurarse de que está llamando al elemento correcto del diccionario. Aquí hay un ejemplo que llama tanto a la clave como al valor:

sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}

for key in sammy_shark:
   print(key + ': ' + sammy_shark[key])
Output
name: Sammy animal: shark location: ocean color: blue

Cuando se utilizan diccionarios con bucles for, la variable de iteración corresponde a las claves del diccionario, y variable_diccionario[variable_iteración] corresponde a los valores. En el caso anterior, la variable de iteración clave se usó para representar la clave, y tiburon_sammy[clave] se usó para representar los valores.

Los bucles son frecuentemente utilizados para iterar y manipular tipos de datos secuenciales.

Conclusión

El bucle for en Python es muy similar a otros lenguajes de programación. Podemos usar las declaraciones break y continue con el bucle for para alterar la ejecución. Sin embargo, en Python, también podemos tener un bloque else opcional en el bucle for.

I hope you have gained some interesting ideas from the tutorial above. If you have any questions, let us know in the comments below.

Desde aquí, puedes continuar aprendiendo sobre bucles leyendo tutoriales sobre bucles while y declaraciones break, continue y pass.

Para trabajar con bucles for en proyectos, sigue los siguientes tutoriales:

Source:
https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3