For Loops en Python: todo lo que necesitas saber

Publicado: 2022-08-18

Este tutorial le enseñará todo sobre el uso de bucles for en Python con ejemplos de código.

En programación, los bucles lo ayudan a repetir un conjunto específico de declaraciones. Utilizará bucles for para iteraciones definidas cuando:

  • sabes que trabajarás con una secuencia con un número finito de elementos
  • ves el número de repeticiones de antemano

Este tutorial le enseñará todo sobre cómo trabajar con bucles for en Python. Comenzará aprendiendo la sintaxis y las iteraciones simples usando un bucle for. Luego, aprenderá a procesar argumentos de línea de comando, usar declaraciones de control de bucle y más.

Empecemos…

Sintaxis de Python para Loop

Sintaxis de Python para Loop

La sintaxis genérica para usar el bucle for en Python es la siguiente:

 for item in iterable: # do something on item statement_1 statement_2 . . . statement_n

En la sintaxis anterior:

  • item es la variable de bucle.
  • iterable denota cualquier iterable de Python, como listas, tuplas y cadenas.
  • declaración_1 a declaración_n indican las declaraciones en el cuerpo del ciclo.

Nota : asegúrese de agregar dos puntos ( : ) después del nombre del iterable y sangrar todas las declaraciones en el cuerpo del bucle con cuatro espacios.

Común para construcciones de bucle en Python

para construcciones de bucle

Cuando se usa un bucle for :

  • Puede acceder a los elementos directamente usando la sintaxis discutida en la sección anterior.
  • Puede usar for loop junto con las funciones integradas de Python, como range() y enumerate() .

Los cubriremos en esta sección.

Uso de bucle for para acceder a elementos

Para mejorar la legibilidad, debe elegir una variable de bucle que indique lo que contiene la lista. Por ejemplo, en el siguiente ejemplo, nums es una lista de números que usamos num como la variable de bucle. Observe cómo for num in nums: es intuitivo y fácil de leer.

 nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3

Agregando algunos ejemplos más, puede usar for fruit in fruits: y for student in students: al recorrer las fruits y la lista de students , respectivamente.

Usando for Loop con la función range()

Cuando desee acceder a un elemento de la lista a través de su índice, puede utilizar la función range() .

En Python, range(start, stop, step) devuelve un objeto de rango, que puede recorrer para obtener los índices: start , start + step , y así sucesivamente, hasta, pero sin incluir, stop .

 for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3

También puede usar la función range() para generar una secuencia de números para recorrer. En el siguiente ejemplo, configuramos el parámetro de step opcional en 2. Entonces obtenemos números desde 10 hasta 20, pero sin incluirlo, en pasos de 2.

 for i in range(10,20,2): print(i) # Output 10 12 14 16 18

Usando for Loop con la función enumerate ()

Cuando desee recorrer un iterable y acceder a los elementos y sus índices simultáneamente, puede usar la función enumerate().

Aquí hay un ejemplo.

 for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3
python-para-bucle

Cómo leer elementos de listas usando for Loop en Python

Para recorrer las listas de Python usando for loop, puede usar la sintaxis genérica de la sección anterior.

En el siguiente ejemplo, nums es iterable y num es la variable de bucle.

 nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9

Cómo recorrer cadenas usando for Loop en Python

Las cadenas de Python son iterables y puede realizar bucles, indexar, dividir y más.

Nota : Python no tiene un tipo de datos de carácter incorporado. Entonces puede tratar un carácter como una cadena de longitud uno.

 my_string = "Code" for char in my_string: print(char) # Output C o d e

Cómo hacer un bucle a través de matrices usando for Loop en Python

Bucle a través de matrices usando for Loop

Puede recorrer matrices usando bucles y anidar para bucles.

En el fragmento de código siguiente, array1 es una lista anidada que contiene listas más pequeñas como elementos. Entonces, recorrer array1 da cada fila, como se muestra a continuación.

 array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]

Para acceder a elementos individuales en cada fila, puede usar otro bucle for .

 array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)

En la celda de código anterior:

  • El bucle for externo lo ayuda a indexar en las filas.
  • El bucle for interno le permite acceder a los elementos de cada fila.

Aquí está la salida correspondiente.

 Output 2 3 7 8

Cómo leer argumentos de la línea de comandos usando for Loop

Línea de comando

Como desarrollador, debe sentirse cómodo ejecutando secuencias de comandos de Python desde la línea de comandos y utilizando argumentos de línea de comandos para interactuar con su secuencia de comandos.

Puede usar los módulos integrados de Python, como sys y argparse, para analizar y leer argumentos de la línea de comandos.

En esta sección, repasaremos cómo usar el módulo sys y usaremos un ciclo for para recorrer la lista de argumentos de la línea de comandos.

En el módulo sys, sys.argv es la lista de argumentos de la línea de comandos que pasa. Por lo tanto, puede recorrer sys.argv de la misma manera que recorrería cualquier lista de Python.

 # main.py import sys for arg in sys.argv: print(arg)

Ahora puede ejecutar el programa desde la línea de comandos, como se muestra a continuación.

 $ python main.py Hello Python3 main.py Hello Python3

De forma predeterminada, el nombre del módulo es el primer argumento y está en el índice cero en sys.argv .

Si desea acceder a los índices y los argumentos correspondientes, puede utilizar la función range() .

 # main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

️ A continuación, vuelva a ejecutar main.py.

 $ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3

Suponga que desea analizar y procesar los argumentos que no sean el nombre del módulo. Puede establecer el valor inicial en 1, como en la celda de código a continuación.

 # main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
 $ python main.py Hello Python3 arg1 is Hello arg2 is Python3
python-for-loop-command-line-args

Poniéndolo todo junto, el archivo main.py contiene el siguiente código.

 # main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

Aquí está la salida cuando ejecuta el módulo.

 $ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3

Cómo usar la instrucción break dentro del bucle for

instrucción break dentro del bucle for

Al igual que otros lenguajes de programación, Python también admite el uso de sentencias de control de bucles break y continue . Estas declaraciones pueden ayudar a alterar el flujo de control en los bucles, en función de algunas condiciones. Veamos cómo usarlos dentro de un bucle for.

La sentencia break the se puede utilizar para salir de un bucle cuando una condición específica es True .

Queremos escribir un programa para hacer lo siguiente:

  • Fijar k , el número de entradas.
  • Use un ciclo for para leer las entradas del usuario, un dígito a la vez, y sume los números no negativos (mayores o iguales a cero).
  • Este proceso debe continuar mientras el usuario ingrese números no negativos.
  • Cuando el usuario ingrese un número negativo, salga del bucle e imprima la suma.

Aquí está el código que realiza la tarea anterior.

 k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)

Si el usuario ingresa un número menor que cero, el control sale del ciclo for a la primera declaración después del ciclo.

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10

Cómo usar la instrucción continue Inside for Loop

La declaración de continue se puede usar para omitir ciertas iteraciones dependiendo de una condición específica.

Usemos los mismos ejemplos de la sección anterior.

  • Lea la entrada del usuario y calcule la suma de números no negativos.
  • Si el usuario ingresa un número negativo, omita esa iteración, continúe con la siguiente iteración y lea el siguiente número.
 k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)

Aquí hay una salida de muestra.

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13

El cuarto número es -1, que es negativo. Sin embargo, esta vez el bucle for continúa hasta que alcanzamos el número especificado de entradas e ignora las entradas negativas. Básicamente, devuelve la suma de todos los números no negativos de los k números de entrada.

¿Puedes encontrarte con un bucle for infinito en Python?

Infinito para bucle

En todos los ejemplos y casos de uso que hemos discutido hasta ahora, nunca nos encontramos con el problema de un bucle for infinito. Pero, ¿podemos tener un bucle for infinito en Python?

Considere la siguiente función double() .

 def double(x = 1): return x*2
  • Cuando llama a la función double() sin especificar el valor de x , se usa el valor predeterminado de 1.
  • Cuando especifica un valor para x en la llamada de función, se usa ese valor.
 double() # Returns: 2 double(20) # Returns: 40

En Python, la función iter() devuelve un objeto iterador. Puede usar next(iter-obj) para recorrer la secuencia y acceder a los elementos posteriores.

– Considere un objeto invocable y un valor, centinela .

iter(callable-object, sentinel) puede usarse para realizar una iteración hasta que el valor de retorno del callable-object sea igual a sentinel .

¿Ves por qué podemos tener un bucle for infinito en este caso?

python-para-bucle-infinito

Bueno, tienes un callable-object y un valor sentinel . Si el valor de retorno del invocable nunca es igual al centinela, ¡entonces el ciclo continúa para siempre!

Usemos la función anterior double como invocable y establezcamos el valor centinela en 0.

Nota : Mencione el nombre de la función double , no la función llamada double() .

Como el valor de retorno de la función double siempre es 2 y nunca es igual a 0, ¡tenemos un bucle infinito!

️ Intente ejecutar la siguiente celda de código. Es infinito para el ciclo, y tendrás que forzar la detención del programa.

 for _ in iter(double,0): print("Running...")
python-for-loop-infinito

Python For Loops: Preguntas de práctica

#1 Use for loop para imprimir todos los números pares en el rango de 0 a 20.

Sugerencia : utilice la función range() con el valor de step correcto.

#2 Imprime todos los números pares del 20 al 0.

Sugerencia : use un valor negativo para el parámetro de step en la función range() .

#3 Cree una matriz NumPy tridimensional.

Sugerencia : use el bucle for y los bucles for anidados según sea necesario para acceder a las filas y entradas individuales en la matriz.

Pruebe los ejemplos

Terminando

Aquí hay un resumen de lo que ha aprendido en este tutorial.

  • La sintaxis para usar el bucle for de Python junto con las funciones range() y enumerate()
  • Uso de bucles for para recorrer listas, matrices y cadenas, y leer argumentos de la línea de comandos
  • Uso de sentencias de control de bucle: romper para salir del bucle y continuar sentencia para omitir ciertas iteraciones, según las condiciones, dentro de los bucles
  • Entendiendo la posibilidad de bucles for infinitos en Python

A continuación, aprenda a usar el método split() en Python.