Bucle while y for en Python 3

Por Alejandro van den Akker

En este artículo vamos a hablar sobre el bucle while y for en Python, su estructura y algunos ejemplos para que puedas ponerlo en práctica.

Un bucle es una estructura de control que se repite por medio de un bloque de instrucciones. Imagínate que tienes que repetir la misma acción 20 veces, pues un bucle nos va a ayudar a automatizar esa acción mientras la condición se cumpla.

En Python existen 2 tipos de bucles: while y for.

El bucle while

El bucle while nos permite repetir la ejecución de un grupo de instrucciones mientras que las condiciones se cumplan, es decir, si la condición es True permanece en el bucle. Una vez la condición deja de ser verdadera, salimos del bucle.

Veamos su estructura:

while condición_verdadera:
  instrucción 1
  instrucción 2
  instrucción n

Funcionamiento del bucle while

En este ejemplo vamos a imprimir en pantalla del número 1 al 10:

i = 1
while i <= 10:
    print(i)
    i += 1

Mientras que la condición se cumpla, i es menor igual a 10, i que valía 1 ahora vale 2 y así sucesivamente, hasta que i no sea mayor a 10, el bucle seguirá contando.

# Salida
1,2,3,4,5,6,7,8,9,10

Veamos un ejemplo que te pueda ser útil. Imagina que necesitas saber cuantas vocales contiene una palabra o frase, con un bucle while podemos hacerlo:

# Recogemos el dato del usuario
s = input(str())
s = s.lower()
i = 0
count = 0

# Creamos una lista con las vocales
vocal = ["a", "e", "i", "o", "u"]
# Iniciamos el bucle en busca de vocales
while i < len(s):
    if s[i] in vocal:
        count += 1
    i += 1

print(count)

Concretamente el proceso será el siguiente:

  1. Mientras i sea menor a la longitud proporcionada por el usuario (es decir que no contenga nada la variable) el bucle seguirá.
  2. Si la variable s que contiene el dato del usuario, encuentra una vocal de la lista, almacenará en la variable llamada count el número de vocales encontrados por i, por lo tanto devuelve un int.
# Salida 
4
# He introducido la palabra "camaleón" 

Combinación whileelse

Los bucles se pueden combinar con condicionales en cuyo caso el else, ejecutará un bloque si la condición del while ha dejado de ser True.

El siguiente ejemplo haremos una cuenta atrás del 5 hasta que llegue al 0, en cuyo caso ejecutará un bloque de código que enviará un mensaje:

i = 5
count = 1

while i >= 0:
    print(i)
    i -= count
else:
    print("No contaré lo números negativos")   
# Salida 
5
4
3
2
1
0
No contaré lo números negativos

El bucle for

Habiendo visto el bucle while y sus función, el bucle for a lo que a mi respecta es mucho más poderoso y encaja más para algunos programadores y para determinadas situaciones, ya que no depende de que la condición sea verdadera.

El bucle for es una de las estructuras que más utilizaremos en Python, bien seas programador de Apps o servicios web, o bien, trabajes con estructuras de datos como analista o data scientist.

Su estructura es la siguiente.

for clave:
  instrucción 1
  instrucción 2
  instrucción n

La función range

Esta función en un bucle for tiene 3 argumentos que son: start, stop y step.

En el siguiente ejemplo lo simplificamos:

for i in range(1, 11, 1):
  print(i)
# Salida 
1,2,3,4,5,6,7,8,9,10

Decimos que i en el rango de:

  1. Posición en la que empieza: 1.
  2. Posición en la que termina sin contar el último número: 11.
  3. Los saltos que queremos dar, en este caso: 1.

Puntos importantes de la función range

  • El argumento start por defecto es 0.
  • El elemento indicado en el argumento stop no se incluye.
  • El valor por defecto de step es 1.

Veamos otro ejemplo con una lista:

idioma = ["Castellano", "Ingles", "Frances", "Alemán"]
# Empieza desde el índice 0 == Castellano
for i in idioma:
    print(i)
# Salida
Castellano
Ingles
Frances
Alemán

Con estos puntos claros ya puedes poner en práctica lo aprendido y crear tu propio bucle for. Con práctica, verás que es mucho más simple de lo que se ve, es lógico que al principio te cueste, pero al final, terminarás creando bucles anidados más complejos.

Bucles anidados

Recuerdo cuando estaba en 4 de primaria las tablas de multiplicar estaban a la orden del día, podía pasarme 1 hora o más en hacer las del 1 al 10. Pues bien, con un bucle anidado haremos las 10 tablas de multiplicar en menos de lo que canta un gallo.

Veamos en este ejemplo un for anidado, que es nada menos que un bucle dentro de otro :

for i in range(1, 11):
    print("\nTabla de multiplicar del {}".format(i))
    for j in range(1,11):
        result = i * j
        print("{} x {} = {}".format(i, j, result))
# Salida tablas del 1 al 10
Tabla de multiplicar del 1
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
1 x 10 = 10

En el primer for (multiplicando) le digo que del rango 1 hasta el 11 (10), recuerda que el último número no lo contamos, sea multplicado con el segundo for (multiplicador) y me lo guarde el la variable result (valor del producto).

Este ejemplo imprime las 10 tablas en vertical pero solo mostrare una por motivos evidentes, no quiero que tengas un scroll de 1 metro. Si quieres probar el código puedes copiarlo y ver el resultado.

Conclusión

Los bucles son estructuras de control que te van a facilitar mucho la vida, además de que vas a estar en contacto constantemente con ellos. Mediante vayas avanzado en la programación con Python iras creando bucles cada vez más complejos y serán parte de la lógica de tus programas.

¿Te ha parecido útil?