En este post aprenderemos qué son y cómo utilizar los bucles en Python (While y For), sus diferencias, como trabaja cada uno y en que momento debemos utilizar uno u otro en diferentes casos prácticos. Además incorporamos condicionales y datos estructurados en ejemplos prácticos para que mejores tu lógica de programación.
¿Qué son los bucles en python?
Un bucle o ciclo en programación es la ejecución continua de un determinado bloque de código mientras una condición asignada se cumpla.
Es decir, por ejemplo, que los bucles en python son partes o bloques de nuestro programa que se ejecutan mientras se cumpla determinada condición. Existen también los bucles infinitos en Python que son aquellos en los cuales la condición “siempre o nunca” se cumple.
-Basta ya de filosofía!! Este es un blog de programación!
-Ho cierto!!
⚡ El bucle For en Python
Los bucles for en Python, iteran sobre los ítems de cualquier secuencia (lista, cadena, diccionario) en el orden en que aparecen en la secuencia.
Iterar significa realizar cierta acción repetidas veces, y en el caso de for
, hace referencia a recorrer elementos iterables, como puede ser un diccionario en búsqueda de un elemento en particular.
Este código podría leerse: Para “char” en L (lista) hacer:
- Si “char” es exactamente igual a “c”: Imprimir True
- Sino, si “char” es exactamente igual a “j”: Imprimir True
- Para todo lo demás será False, evidentemente.
Este bloque de código dentro del bucle se suele llamar “cuerpo del bucle” (que en este caso son condicionales), y cada repetición se suele llamar iteración.
Para no complicarnos tanto podemos entender al bucle for como el encargado de recorrer una secuencia buscando esos elementos que cumplen determinada condición y realizando alguna instrucción según sea especificada. Es importante recalcar que dichos elementos deben ser «iterables», es decir, recorribles.
Un bucle for podría verse como hojear un libro pagina por pagina y extraer solo las imágenes. El hecho de extraer solo las imágenes sería la condición y una vez extraídas todas se habría cumplido por lo que el bucle se detendría.
Si has comprendido el uso del ciclo for, es hora de ver su sintaxis. Venga que es muy sencillo!
🖋️Sintaxis del bucle for
En el caso de un bucle for se debe especificar la variable donde se alojarán los ítem del elemento iterable (lista, diccionario, cadena, etc.)
Se coloca la sentencia for seguida de la variable donde se almacenarán los ítem y luego del operador «in» el elemento a iterar:
for variable in elemento_iterable: cuerpo de la repetición
En este caso “elemento_iterable” debe ser obligadamente un elemento iterable, como por ejemplo, un dato estructurado (lista, tupla o diccionario, etc) si es una variable que almacena un solo dato único o es un objeto no iterable, obtendremos un error.
Ejemplo: Iterar una lista de números
#!/usr/bin/env python # -*- coding: utf-8 -*- # # sin título.py # # Copyright https://pythones.net numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] # Creamos la lista con números for num in numeros: # En la variable "num" almacenamos los ítems de la lista if num % 2 == 0: # Condición: Si el resto de la división por dos es cero entonces: print(num) # Imprimimos la variable num
Resultado:
2, 4, 6, 8, 10, 12, 14
Aquí estamos creando un bucle que itera sobre la lista números almacenando los ítem de ella en la variable «num» e imprimiendo aquellos que cumplen la condición de «al dividirlos por 2, da resto cero». Esto lo hacemos utilizando el operador aritmético «%» y el de comparación «==» que vimos anteriormente.
Si tu ejecutas este código verás que solo ha de imprimir los números pares, pero si cambiáramos el operador de comparación «==» (exactamente igual) por «!=» (diferente) a cero, nos imprimiría los impares. Prueba lo siguiente:
#!/usr/bin/env python # -*- coding: utf-8 -*- # # sin título.py # # Copyright https://pythones.net numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] #Creamos la lista con números for num in numeros: #En la variable "num" almacenamos los ítem de la lista if num % 2 != 0: #Condición: Si el resto de la división por dos es cero entonces: print (num) # Imprimimos la variable num
Resultado:
1, 3, 5, 7, 9, 11, 13
El bucle es el mismo, pero solo hemos cambiado la condición y en este caso nos imprimirá los números impares de la lista «números».
Ejemplo: Contar letras en una cadena
#!/usr/bin/env python # -*- coding: utf-8 -*- # # sin título.py # # Copyright https://pythones.net entrada = "hola estoy programando en python" # Cadena de texto a analizar contador = 0 cuentalaletra = 'a' # Almacenamos en la variable la letra que vamos a contar for letra in entrada: # Almacenamos en letra cada ítem de la cadena if letra == cuentalaletra: # Si el ítem es igual a la letra a contar contador += 1 # Sumamos uno al contador print(cuentalaletra, ':', contador) # Imprimimos la letra a contar y el número del contador
Resultado:
a : 3
- En este ejemplo tenemos la variable “entrada” que almacena una cadena de texto (String), que podría ser cualquiera.
- Seguidamente definimos la variable contador donde iremos sumando 1 a la variable cada vez que se cumpla la condición.
- Definimos la variable cuentaletra que se encargará de almacenar el carácter a contar, en este caso “a”.
- Definimos el bucle for, para la variable “letra” en la variable “entrada” (que es la que almacena la cadena de texto) hacer.
- Condición: Si la variable “letra” (que será cada letra, cada iteración) es exactamente igual a “cuentaletra” que será en este caso la letra “a” hacer:
- Sumamos 1 a contador automáticamente usando operadores.
- Finalmente imprimimos cuentaletra y la variable contador (que almacena cuantas veces encontró la letra)
⚡ El bucle While en Python
El bucle while
nos permite ejecutar un bloque de código continuamente mientras la condición sea verdadera. Incluso podemos crear bucles infinitos.
Estos se ejecutan mientras la condición sea verdadera. Si la condición se cumple, se ejecutará el cuerpo del bucle y al finalizar se volverá a comprobar la condición. Si continúa siendo verdadera, se ejecutará nuevamente. En caso contrario, omitirá el bucle y continuará con la ejecución normal del programa.
Es importante aprendas a diferenciar los bucles en python, comprendas su funcionamiento y sepas cuándo utilizar uno u otro.
A lo largo de este post veremos diferentes ejemplos que podrás probar en tu cuaderno Jupyter y jugar con el código para experimentar con su funcionamiento.
🖋️Sintaxis del bucle while
Es realmente muy sencilla, escribimos la palabra reservada While seguida de la condición y dos puntos, debajo de esta se encontrara el cuerpo del mismo.
while (condición): Cuerpo de la repetición
Veamos algunos ejemplos:
Ejemplo: Contador usando while
#!/usr/bin/env python # -*- coding: utf-8 -*- i = 0 # Declaramos el valor de la variable "i" while i <= 9: # Creamos el bucle con la condición de ejecutarse mientras "i" sea menor o igual a "9" i += 1 # Cuerpo de la repetición: sumamos uno a i (i es igual a i mas uno) print(i) # Imprimimos "i"
Resultado:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- Definimos la variable “i” y le asignamos el valor “0”.
- Seguidamente creamos el bucle While con la condición de que se ejecute mientras i sea menor o igual a 9 (revisar operadores de comparación)
- Dentro del cuerpo del bucle le sumamos 1 a i, automáticamente a cada vuelta del bucle.
- Finalmente imprimimos i.
Como verás se detiene cuando “i” alcanza el valor 10. Porque así está definido, ya que el bucle da una vuelta más y se encuentra con que “i” es igual a 10. Por ende, es mayor a 9. Si quieres que sea exactamente 9 debes tener en cuenta que la comprobación se hace cada comienzo del bucle, por lo que deberías cambiar la condición a detenerse en 8. Este es un detalle muy importante a tener en cuenta en cuanto al funcionamiento de los bucles en python.
Ejemplo: Menú usando while infinito
#!/usr/bin/env python # -*- coding: utf-8 -*- # # bucles.py # # Copyright https://pythones.net while True: # Creamos el ciclo infinito opcion = input("""Elige una fruta para tu desayuno: 1- Manzanas 2- Bananas 3- Nada """) # Creamos un input para que el usuario ingrese su opción y la almacenamos en "opcion" if opcion == '1': # Condicionales según la opción que eligió! print("Has seleccionado manzanas") elif opcion == '2': print("Has seleccionado bananas") elif opcion == '3': print("Has seleccionado nada") else: print("Debes seleccionar una opción (1, 2 o 3)")
Nota: Se seguirá repitiendo hasta que el usuario seleccione una opción válida.
- Creamos un bucle infinito, ya que al colocar un “Mientras sea verdadero” se ejecutará indefinidamente.
- Definimos una variable para almacenar el input() o entrada del usuario y le presentamos las opciones. Las cuales se almacenarán en dicha variable.
- Creamos un condicional dentro del bucle que se encargará de comprobar que opción ha elegido el usuario y según la elegida habrá de imprimir.
- Dentro de cada condicional puedes colocar código personalizado para que suceda alguna otra cosa que solo un print(). Te invito a personalizar este código para practicar, puedes por ejemplo; crear una lista y presentarle al usuario la opción de añadir algún elemento según la opción seleccionada.
Fíjate que en este caso al seleccionar una opción se ejecutará lo que esté dentro del condicional y se volverán a presentar las opciones. Pero, ¿y si queremos que el programa se detenga al haber seleccionado una opción y ejecutado el código dentro del condicional?
⚡ Control de Bucles: Break, Continue y Pass
Es importante aprender a controlar el flujo de los bucles en python para evitar errores de ejecución continua o que nuestro bucle sea infinito cuando no lo deseamos así.
La instrucción break
se utiliza para finalizar un bucle, es decir, salir de él y continuar con la ejecución del resto de instrucciones del programa.
Ejemplo: Romper un bucle while
#!/usr/bin/env python # -*- coding: utf-8 -*- # # bucles.py # # Copyright https://pythones.net while True: # Creamos el ciclo infinito opcion = input("""Elige una fruta para tu desayuno: 1- Manzanas 2- Bananas 3- Nada """) if opcion == '1': # Condicionales según la opción que eligió! print("Has seleccionado manzanas") break # Rompemos el bucle elif opcion == '2': print("Has seleccionado bananas") break # Rompemos el bucle elif opcion == '3': print("Has seleccionado nada") break # Rompemos el bucle else: print("Debes seleccionar una opción (1, 2 o 3)") print("Programa terminado, que disfrutes tu desayuno")
Utilizando la sentencia “break” rompemos el bucle, es decir, lo detenemos y se detendrá la ejecución del programa, porque en este caso se trata de un bucle infinito.
continue
dentro de un bucle obliga al intérprete a volver al inicio del bucle, obviando todas las instrucciones o iteraciones debajo de él.Si en vez de colocar un break
, colocáramos en su lugar un continue
, al seleccionar una opción nos devolvería al inicio, volviéndonos a preguntar.
—
pass
es como lo indica su nombre, una expresión nula, no hace nada. Es casi como si no existiera, pero nos permite crear un bucle sin colocar código en su cuerpo para añadirlo más tarde, utilizándolo como un relleno temporal.La diferencia con continue
es que este termina la iteración actual pero continúa con la siguiente instrucción o iteración del bucle, volviendo al inicio. En cambio, pass
no hace nada y continúa con las siguientes instrucciones de este sin volver al inicio.
🆚 Diferencias entre For y While
Destacamos las diferencias de estos dos tipos de bucles en python:
- El bucle
for
podría traducirse como “para”. - El bucle
while
podría traducirse como “mientras”. - En el caso de
for
, no nos permite realizar un ciclo infinito. - A diferencia de
while
, que sí nos brinda esa posibilidad, desde el comienzo no están declaradas la cantidad de iteraciones a realizar.
⚠️ Los errores más comunes al utilizar Bucles en python
- Olvidar los dos puntos (
:
): Cada bucle debe terminar con dos puntos después de la condición. - No indentar correctamente: Python requiere indentación para identificar bloques de código.
- Condición siempre verdadera: Esto crea un bucle infinito si no se maneja correctamente.
- Acceder a índices inexistentes: Intentar acceder a un índice fuera de rango generará un error.
🚀 Conclusión – Bucles en python
Los bucles en python son herramientas fundamentales para automatizar tareas repetitivas. Dependiendo de la situación, puedes elegir entre:
- Bucle for: Ideal para recorrer colecciones con un número fijo de elementos.
- Bucle while: Útil cuando necesitas ejecutar código hasta que una condición específica cambie.
Adiooos! Esto ha sido todo sobre los bucles en python, espero lo hayas comprendido al 100% y, si no, vuelve al inicio 8)
Cualquier duda puedes dejar un comentario! Gracias por visitar mi blog y no olvides suscribirte!! Nos vemos en la siguiente!