Entrada

Python 馃悕 : Bucles (FOR y WHILE)

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铆 sucesivamente. Sin embargo, existen casos, cuando se necesita un fragmento de c贸digo que se repita. Python y en general el mundo de la programaci贸n cuentan con las herramientas llamadas bucles (loops) para facilitar esta tarea. Los bucles permiten cambiar el flujo lineal del programa para repetir una parte del c贸digo tantas veces como sea necesario.

---
title: Programa lineal vs control de flujo
---
flowchart TB
    subgraph lineal
    	direction TB
    	inicio([Inicio])
      -->a1[a1]
      a1 --> a2[a2]
      a2 --> a3[a3]
      a3 --> fin([fin])
    end
    subgraph "con bucle"
    	direction TB
    	b1([inicio])
    	-->b2{Es verdadero?}
    	b2 --> |Si| c2[Ok]
    	c2 --> d2[Repetir]
    	d2 --> b2
    end

Bucle WHILE

Una forma de iteraci贸n en Python es la sentencia while que permite repitir la ejecuci贸n de un bloque de c贸digo siempre y cuando la expresi贸n condicional del bucle sea verdadera.

  • 1
    2
    3
    4
    5
    6
    
    i = 5
    while i > 0:
      print(i)
      i -= 1
    
    print("隆Booom!")
    
  • >>> i = 5
    ... while i > 0:
    ...   print(i)
    ...   i -= 1
    ... print("隆Booom!")
    ... 
    5
    4
    3
    2
    1
    隆Booom!
    

La operaci贸n i -= 1 es lo que suele llamar un **decremento de una variable^^. Es equivalente a i = i - 1 y por ende es muy com煤n simplificarlo, aunque hace exactamente lo mismo.

Lo que ocurre a la hora de hacer funcionar este c贸digo es lo siguiente:

  • Antes de entrar en el bucle while, se inicializa la variable i en 5.
  • Antes de realizar la primera iteraci贸n del bucle, comprobamos la condici贸n.
  • Si la condici贸n es verdadera, hacemos lo que est谩 dentro del bucle.
  • Mostramos por pantalla el valor de i y luego decrementamos el valor actual de i en 1.
  • Volvemos al inicio del bucle para hacer una nueva iteraci贸n. Comprobamos de nuevo la condici贸n del bucle.
  • Cuando la condici贸n sea falsa, salimos del bucle y se muestra por pantalla 隆Boom!.

Un bucle while es muy simple, pero requiere que declaremos una variable previamente para evaluar y evitar que el programa se quede colgado en un bucle infinito por olvidarnos de este factor y adem谩s dentro debemos recordar incrementar o decrementar el valor de la variable.

Bucle FOR

El bucle for es quiz谩s una de las estructuras de control m谩s utilizada en el mundo de la programaci贸n. El bucle for a diferencia del while es una iteraci贸n que recorre los elementos de una secuencia ordenadas como en el caso de una lista, tupla, string, aunque tambi茅n puede ser cualquier otro objeto que sea iterable.

Ejemplos bucle for

Podemos imprimir el valor de la variable de control utilizando el bucle:

1
2
for i in [1, 2, 3, 4, 5]:
	print("Valor de i:", i)
1
2
3
4
5
Valor de i: 1
Valor de i: 2
Valor de i: 3
Valor de i: 4
Valor de i: 5

Si la variable de control no se va a utilizar en el cuerpo del bucle, como en el ejemplo anterior, se puede utilizar un gui贸n bajo (_) en vez de un nombre:

1
2
for _ in [1, 2, 3, 4, 5]:
	print("Hola")
1
2
3
4
5
Hola
Hola
Hola
Hola
Hola

El _ es solo una notaci贸n que no tiene ninguna consecuencia con respecto al funcionamiento del programa, pero sirve de ayuda a la persona que est茅 leyendo el c贸digo fuente, que sabe as铆 que los valores no se van a utilizar

En los ejemplos anteriores, la variable de control no se le a dado un uso relevante aparte de mostrar su valor, pero en muchos casos s铆 se utiliza para realizar alguna otra operaci贸n. Cuando se utiliza, hay que tener en cuenta de que la variable de control va cambiando seg煤n su posici贸n en el conjunto. Por ejemplo, elevar al cuadrado cada valor dentro de la lista ser铆a de la siguiente manera:

1
2
for i in [3, 4, 5]:
	print(f"Hola. Ahora i vale {i} y su cuadrado es {i ** 2}")
1
2
3
Hola. Ahora i vale 3 y su cuadrado es 9
Hola. Ahora i vale 4 y su cuadrado es 16
Hola. Ahora i vale 5 y su cuadrado es 25
Esta entrada est谩 licenciada bajo CC BY 4.0 por el autor.