En programación, los bucles for son herramientas increíblemente versátiles para repetir una sección de código. Los bucles for pueden repetirse un número determinado de veces usando un rango, pueden tener cláusulas/condiciones que terminarán el bucle y podemos usarlos para iterar elementos en un diccionario, lista o tupla.
En este instructivo, le mostraremos cómo comenzar con bucles for usando Python, la misma sintaxis también funcionará con MicroPython y CircuitPython en placas como la Frambuesa Pi Pico.
Para demostrar cómo usar bucles for en Python, usaremos Thonny, un editor de Python gratuito, fácil de usar y multiplataforma.
1. En un navegador, vaya al sitio web de Thonny y descargar el lanzamiento para su sistema.
2. Alternativamente, instale la versión oficial de Python usando esta guía. Tenga en cuenta que esta guía cubre la instalación en Windows 10 y 11.
Usar un rango con bucles For de Python
El uso de bucle for más básico en Python es iterar sobre un rango, esencialmente creando un bucle que solo iterará una cantidad determinada de veces. Si bien «rango» no es estrictamente parte de la sintaxis de un bucle for, en realidad es una función integrada de Python que devuelve una secuencia para un patrón específico, es la forma más fácil de demostrar cómo funciona un bucle for.
1. Cree un bucle for y establezca el rango en 10.Esto establecerá el valor de x en un valor entero, comenzando en 0 y terminando en 9. El bucle iterará hasta llegar al décimo bucle, luego terminará.
for i in range(10):
2. Imprime el valor actual de i como parte de una oración. Aquí usamos el método de formato de cadena de Python para insertar el número de ciclo cada vez que el ciclo itera.
print("This is loop: :n".format(i))
3. Guarde el código como for_loop_range.py y haga clic en Ejecutar para comenzar. Debería ver esta salida.
This is loop: 0
This is loop: 1
This is loop: 2
This is loop: 3
This is loop: 4
This is loop: 5
This is loop: 6
This is loop: 7
This is loop: 8
This is loop: 9
Listado completo de códigos: For Loop con un rango
for i in range(10):
print("This is loop: :d".format(i))
Para ilustrar mejor cómo podemos usar un bucle for, usemos un bucle for con un rango para extraer los cinco titulares principales del feed RSS de BBC News junto con su URL correspondiente.
1. Instalar feedparser usando pip en un símbolo del sistema. Feedparser es una herramienta de análisis de RSS que usaremos para leer el feed RSS y convertirlo en un diccionario de Python.
pip install feedparser
2. En Thonny, cree un nuevo archivo de Python en blanco y importar feedparser.
import feedparser
3. Crear un objeto, fuente de noticias, y allí almacenar el feed de noticias de la BBC analizado.
newsfeed = feedparser.parse("http://feeds.bbci.co.uk/news/rss.xml")
4. Use un bucle for con un rango de cinco.
for i in range(5):
5. Imprima los titulares (título) y la URL (enlace) de las cinco historias principales. Aquí estamos accediendo al objeto de suministro de noticias, que es un diccionario (matriz) que contiene muchos más diccionarios y listas. Usando las claves (entradas, título y enlace) podemos obtener los valores que almacenan. El valor de [i] incrementa, hasta que llega a 5, luego el ciclo termina. Tenemos instrucciones que cubren diccionarios y listas que dan más detalles.
print(newsfeed['entries'][i]['title'])
print(newsfeed['entries'][i]['link'])
6. Guarde el código como news_for_loop.py y haga clic en Ejecutar. Debería ver los cinco principales titulares de noticias.
import feedparser
newsfeed = feedparser.parse("http://feeds.bbci.co.uk/news/rss.xml")
for i in range(5):
print(newsfeed['entries'][i]['title'])
print(newsfeed['entries'][i]['link'])
Bucles for con salida anticipada
Los rangos también pueden presentar una «salida anticipada». Esto usa una declaración condicional que verifica el valor del bucle (en nuestro caso, se almacena en i) y si coincide con el valor, el código se rompe y sale.
Vamos a reutilizar el código del primer ejemplo para empezar.
1. Agregue una prueba condicional que verifique que el valor de i sea el mismo que 4. En Python == es un operador que verifica que un valor sea igual a otro.
if i == 4:
2. Imprima una oración para informar al usuario que el ciclo está terminando. Esta parte del código solo se activará una vez que «i» contenga el valor 4.
print("This loop sequence terminates at loop :n".format(i))
3. Rompe el ciclo, obligando al código a detenerse.
break
4. Guarde y ejecute el código. Debería ver esta salida.
This is loop: 0
This is loop: 1
This is loop: 2
This is loop: 3
This is loop: 4
This loop sequence terminates at loop 4
Listado completo de códigos: For Loop con una salida anticipada
for i in range(10):
print("This is loop: :n".format(i))
if i == 4:
print("This loop sequence terminates at loop :n".format(i))
break
Bucles for anidados
Podemos tener varios bucles for ejecutándose juntos. Por ejemplo, podemos anidar un bucle for dentro de otro. En este ejemplo estamos reutilizando el código del primer ejemplo.
for i in range(10):
print("This is loop: :n".format(i))
1. Agregue un bucle for anidado que iterará diez veces. Asegúrese de que el nombre de la variable sea diferente al del ciclo principal, de lo contrario, los dos chocarán.
for j in range(10):
2. Agregue una declaración de impresión para informar al usuario que este es el bucle for anidado.
print("This is nested loop: :n".format(i))
3. Use un descanso para salir del bucle for anidado. Si no hacemos esto, entonces el bucle for anidado se repetirá cada vez que se itere el bucle principal.
break
4. Guarde y ejecute el código. Debería ver esta salida.
This is loop: 0
This is nested loop: 0
This is loop: 1
This is nested loop: 1
This is loop: 2
This is nested loop: 2
This is loop: 3
This is nested loop: 3
This is loop: 4
This is nested loop: 4
This is loop: 5
This is nested loop: 5
This is loop: 6
This is nested loop: 6
This is loop: 7
This is nested loop: 7
This is loop: 8
This is nested loop: 8
This is loop: 9
This is nested loop: 9
Listado completo de códigos: bucles for anidados
for i in range(10):
print("This is loop: :n".format(i))
for j in range(10):
print("This is nested loop: :n".format(i))
break
Iterando con bucles For
Iterar sobre objetos en una lista, diccionario o tupla es útil si queremos usar datos de estos objetos. En este ejemplo, reutilizaremos el código de nuestro lector de fuentes RSS para crear una aplicación web sencilla. Un bucle for a distancia tomará los titulares de noticias del objeto, luego dividirá los titulares y sus URL y luego los almacenará dentro de un objeto de diccionario de Python. Luego usaremos el diccionario como fuente para generar una página HTML en un navegador.
1. Instalar PyWebIO usando pip en el símbolo del sistema,. PyWebIO es un medio para crear entradas y salidas en torno a una sesión de navegador.
pip install pywebio
2. En Thonny, cree un nuevo archivo de Python en blanco e importe feedparser e importe tres clases de PyWebIO. PyWebIO tiene muchas clases y funciones diferentes, pero estamos interesados en crear un servidor, enviar información a un navegador y controlar la sesión.
import feedparser
from pywebio import start_server
from pywebio.output import *
from pywebio.session import *
3. Crear un objeto, fuente de noticias, y allí almacenar el feed de noticias de la BBC analizado. Puede ser cualquier fuente RSS que elija.
newsfeed = feedparser.parse("http://feeds.bbci.co.uk/news/rss.xml")
4. Cree un diccionario vacío llamado news_stories. Los diccionarios son objetos de Python que almacenan datos mediante un sistema de valores clave. Al llamar a un diccionario y hacer referencia a una clave, podemos obtener el valor adjunto.
news_stories =
5. Usando un ciclo for con un rango, tome las primeras cinco noticias y guárdelas dentro del diccionario news_stories. El título (titular) será la clave y la URL será el valor.
for i in range(5):
news_stories.update(newsfeed['entries'][i]['title']:newsfeed['entries'][i]['link'])
6. Crea una función llamada main. Esta función se encargará de crear el contenido web que se va a servir.
def main():
7. Establecer el título de la página. Esto se ve en la pestaña / barra de título del navegador web.
set_env(title="Python For Loops RSS Example")
8. Use un bucle for para iterar sobre cada clave (k) y valor (v) almacenados en el diccionario news_stories. El ciclo for finalizará una vez que haya recuperado todas las claves y valores, no necesita un rango.
for k,v in news_stories.items():
9. Coloque el texto del título en la página. La función put_text de PyWebIO coloca texto sin procesar en una página web y le pasamos a la función el valor clave, que es el título.
put_text(k)
10 Coloque la URL debajo del título. Usando put_link generamos un hipervínculo HTML con el texto “Haga clic aquí”. La URL se crea a partir del valor almacenado en v.
put_link('Click here',v)
11 Fuera del bucle for y de la función, inicie el servidor. Llame a la función principal y establezca el puerto en 8080 y depure en True. Es aconsejable establecer el puerto en un valor no utilizado y, por lo general, 8080 es válido. Si es necesario, cambie esto a otro valor. Establecer la depuración en True es útil ya que proporciona resultados en el shell de Python y en la sesión del navegador.
start_server(main, port=8080, debug=True)
12 Guarde el código como for_loop_news_dict.py y haga clic en Ejecutar. El shell de Python mostrará la URL de la página generada.
13 Haga clic en la URL para abrir en su navegador predeterminado. La URL también se puede ver desde otro dispositivo en la red.
Listado de código completo: Iterando con bucles for
import feedparser
import time
from pywebio import start_server
from pywebio.output import *
from pywebio.session import *
newsfeed = feedparser.parse("http://feeds.bbci.co.uk/news/rss.xml")
news_stories =
for i in range(5):
news_stories.update(newsfeed['entries'][i]['title']:newsfeed['entries'][i]['link'])
def main():
set_env(title="Python For Loops RSS Example")
for k,v in news_stories.items():
put_text(k)
put_link('Click here',v)
start_server(main, port=8080, debug=True)