Ciclos en Python: cómo funcionan los bucles For y While y cómo hacerlos
En este artículo aprenderás lo esencial sobre los bucles For y While en Python, cómo funcionan y para qué sirven.
Por lo general, el código en Python se ejecuta de manera secuencial, es decir, empieza por la primera línea, pasa a la segunda y así va. Sin embargo, existen casos, cuando se necesita que un fragmento de código se repita. Python cuenta con las herramientas llamadas bucles o loops para facilitar esta tarea. Los bucles te permiten cambiar el flujo lineal del programa para repetir una parte del código tantas veces que sea necesario.
¿Qué son los bucles en Python?
Primero, aclaremos el término iterar que significa “realizar una acción varias veces”, y cada repetición se llama iteración. Los bucles sirven para que los programas implementen iteraciones, es decir, ejecuten un mismo bloque de código dos o más veces mientras se cumple la condición declarada. Cuando la condición llega a ser falsa, el programa sale del bucle y continúa con su ejecución de forma secuencial.
El flujo de ejecución es el siguiente:
- Evaluar la condición, definiendo si es verdadera o falsa (True o False).
- Si la condición es verdadera, ejecutar el cuerpo y regresar al paso 1.
- Si la condición es falsa, salir del bucle y continuar con la siguiente sentencia.
Python cuenta con dos tipos de bucles fundamentales:
- While, los que tienen un número indefinido de iteraciones,
- For, los que tienen un número definido de iteraciones.
Bucle while
Una forma de iteración en Python es la sentencia while que permite repetir la ejecución de un bloque de código siempre y cuando la condición del bucle sea verdadera.
La sintaxis es muy simple:
while <condición>: <bloque de código>
El código del cuerpo del bucle debe cambiar una o más variables hasta que la condición resulte falsa y el bucle termine. En este ejemplo la variable de iteración cambia el valor del parámetro cada vez que se ejecuta el ciclo y controla cuándo finaliza el ciclo.
x = 5 while x > 0: x -= 1 print(x) print('¡Pum!') 4 3 2 1 0 ¡Pum!
En Python se puede indicar una operación alternativa mediante la sentencia else al final del bucle while. El fragmento de código dentro de else se ejecutará una vez la condición del bucle ya no devuelve True, es decir, hasta que la condición del bucle deja de cumplirse.
x = 5 while x > 0: x -= 1 print(x) else: print('Fin del bucle') 4 3 2 1 0 Fin del bucle
Si no hay ninguna variable de iteración que determine cuántas veces tiene que ejecutar un bucle y la condición permanece verdadera, el mismo fragmento de código se repetirá para siempre, lo que producirá un bucle infinito. Normalmente, los bucles infinitos se deben a errores y hay que evitarlos para no perder el control del programa.
x = 5 while x > 0: print('¡Al infinito y más allá!') ¡Al infinito y más allá! ¡Al infinito y más allá! ¡Al infinito y más allá! …
Bucle For
La sentencia for forma un bucle definido que recorre los elementos de una colección de datos o una secuencia ordenada como listas, diccionarios, tuplas, strings, etc. El bucle hará tantas iteraciones cuántos elementos hay en la secuencia.
El bucle for en Python tiene la siguiente sintaxis:
for <variable> in <secuencia>: <bloque de código>
Por ejemplo, para iterar los elementos de la lista “idiomas” con un bucle for, se le asigna el nombre “idioma” a una variable que representará los elementos de la lista en cada repetición.
idiomas = ['Árabe', 'Inglés', 'Francés', 'Español'] índice = 0 for idioma in idiomas: print ('Este idioma está en la lista: ' + idiomas[índice]) índice += 1 Este idioma está en la lista: Árabe Este idioma está en la lista: Inglés Este idioma está en la lista: Francés Este idioma está en la lista: Español
El bucle for con cadenas tipo string funciona de la misma manera, pero con caracteres en lugar de elementos:
cadena = 'Python' for carácter in cadena: print(carácter) P y t h o n
Igual que con el bucle while, se puede usar la sentencia else para agregar una acción adicional al finalizar el bucle. Veamos un ejemplo con la función range():
for x in range(5): print(x) else: print('Fin del bucle') 0 1 2 3 4 Fin del bucle
Bucles anidados
Python permite anidar bucles metiendo uno dentro de otro. Esto puede ser útil para resolver problemas más complejos: por ejemplo, si quieres iterar algún objeto donde cada elemento tiene otra clase iterable como una lista de listas.
lista = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Para acceder a cada elemento individualmente, puedes anidar dos bucles for. El primero de ellos se encargará de iterar las listas anidadas, y el otro, sus elementos.
for a in lista: for b in a: print(b) 1 2 3 4 5 6 7 8 9
De la misma forma puedes anidar un bucle while. Por ejemplo, te puede ayudar si quieres generar todas las combinaciones posibles de dos números:
a = 0 b = 0 while a < 3: while b < 3: print(a,b) b += 1 a += 1 b = 0 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
¿Cómo se controlan los bucles en Python?
Usando ciertas instrucciones, puedes interrumpir el flujo de ejecución de un bucle si lo necesitas. La sentencia break “rompe” el bucle en cualquier momento, aun cuando la condición sigue siendo verdadera. En el siguiente ejemplo el bucle for recorre todos los números del rango del 0 al 4, pero el programa finaliza cuando el número tenga el valor de 3:
for x in range(5): if x == 3: break print (x) 0 1 2
Lo mismo pasa con el bucle while: al recibir una entrada determinada, el programa sale del bucle y procede a la siguiente línea del código:
while True: respuesta = input('> ') if respuesta == 'salir': break else: print(respuesta) print ('¡Adiós!') > ¡Hola! ¡Hola! > ¿Qué tal? ¿Qué tal? > salir ¡Adiós!
La sentencia continue termina la iteración corriente sin tomar en cuenta el código que está debajo y se vuelve al inicio del bucle.
x = 0 while x < 5: x += 1 if x == 3: continue print(x) 1 2 4 5
En el ejemplo abajo, cuando el valor llegue a ‘y’, el programa saltará de nuevo al bucle for sin ejecutar la última línea de print y sin salir del bucle:
for carácter in 'Python': if carácter == 'y': continue print ('La letra es:', carácter) La letra es: P La letra es: t La letra es: h La letra es: o La letra es: n
Por último, cabe mencionar la sentencia pass. Cuando la ejecución de un bucle llega a la sentencia pass, simplemente pasa a la siguiente instrucción sin modificar el flujo establecido. Habitualmente, se utiliza para reservar espacio si en el momento de escribir un código hay una parte que todavía no está completada:
for x in range(1, 5): if x == 2: pass print (x) 1 2 3 4
Para aprender más y dominar el lenguaje Python a nivel profesional, en EBAC te ofrecemos el curso online de Python para análisis de datos. En solo dos meses aprenderás a manejar listas y estructuras de datos, visualizar y publicar tu análisis de datos y empezarás a programarlo desde cero. Harás actividades prácticas, a tu ritmo, desde cualquier lugar, con el feedback personalizado de un tutor, y aplicarás tus nuevos conocimientos en un proyecto profesional que te ayudará a enriquecer tu portafolio. Al finalizar el curso, recibirás el certificado de EBAC y acceso a la plataforma de por vida.
Python para análisis de datos
Python logoAprende uno de los lenguajes de programación más versátiles y accesibles en la analítica, maneja grandes cantidades de datos de forma automatizada. Agiliza tu trabajo con esta poderosa herramienta, integra tus sistemas, procesa datos más rápido y en diferentes formatos.