Bucles For
Última actualización: 2025-02-28 | Mejora esta página
Hoja de ruta
Preguntas
- ¿Cómo puedo hacer que un programa haga muchas cosas?
Objetivos
- Explica para qué se usan normalmente los bucles for.
- Traza la ejecución de un bucle simple (no anidado) e indica correctamente los valores de las variables en cada iteración.
- Escriba bucles for que utilicen el patrón Acumulador para agregar valores.
Un bucle for ejecuta órdenes una vez por cada valor de una colección.
- Hacer cálculos sobre los valores de una lista uno a uno es tan
doloroso como trabajar con
pressure_001
,pressure_002
, etc. - Un bucle for le dice a Python que ejecute algunas sentencias una vez por cada valor de una lista, una cadena de caracteres o alguna otra colección.
- “para cada cosa en este grupo, haz estas operaciones”
- Este bucle
for
es equivalente a:
- Y la salida del bucle
for
es:
SALIDA
2
3
5
Un bucle for
se compone de una colección, una variable
de bucle y un cuerpo.
- La colección,
[2, 3, 5]
, es sobre la que se está ejecutando el bucle. - El cuerpo,
print(number)
, especifica qué hacer para cada valor de la colección. - La variable de bucle,
number
, es la que cambia en cada iteración del bucle.- Lo “actual”.
La primera línea del bucle for
debe terminar con dos
puntos, y el cuerpo debe tener sangría.
- Los dos puntos al final de la primera línea indican el inicio de un bloque de sentencias.
- Python usa sangría en lugar de
{}
obegin
/end
para mostrar anidamiento.- Cualquier sangría consistente es legal, pero casi todo el mundo utiliza cuatro espacios.
ERROR
IndentationError: expected an indented block
- La sangría siempre tiene sentido en Python.
ERROR
File "<ipython-input-7-f65f2962bf9c>", line 2
lastName = "Smith"
^
IndentationError: unexpected indent
- Este error puede solucionarse eliminando los espacios sobrantes al principio de la segunda línea.
Las variables de bucle pueden llamarse como se quiera.
- Como todas las variables, las variables de bucle son:
- Creado a petición.
- Sin sentido: sus nombres pueden ser cualquier cosa.
El cuerpo de un bucle puede contener muchas sentencias.
- Pero ningún bucle debe tener más de unas pocas líneas.
- Difícil para los seres humanos mantener en mente grandes trozos de código.
SALIDA
2 4 8
3 9 27
5 25 125
Use range
para iterar sobre una secuencia de
números.
- La función incorporada
range
produce una secuencia de números.- No una lista: los números se producen bajo demanda para hacer más eficiente el bucle sobre rangos grandes.
-
range(N)
son los números 0..N-1- Exactamente los índices legales de una lista o cadena de caracteres de longitud N
SALIDA
a range is not a list: range(0, 3)
0
1
2
El patrón Acumulador convierte muchos valores en uno.
- Un patrón común en los programas es:
- Inicializa una variable acumulador a cero, la cadena vacía o la lista vacía.
- Actualiza la variable con valores de una colección.
PYTHON
# Sum the first 10 integers.
total = 0
for number in range(10):
total = total + (number + 1)
print(total)
SALIDA
55
- Lee
total = total + (number + 1)
como:- Suma 1 al valor actual de la variable de bucle
number
. - Añádelo al valor actual de la variable acumuladora
total
. - Asigna esto a
total
, reemplazando el valor actual.
- Suma 1 al valor actual de la variable de bucle
- Tenemos que añadir
number + 1
porquerange
produce 0..9, no 1..10.
Clasificación de errores
¿Un error de sangría es un error de sintaxis o de ejecución?
Un IndentationError es un error de sintaxis. Los programas con errores de sintaxis no pueden iniciarse. Un programa con un error de ejecución se iniciará pero se lanzará un error bajo ciertas condiciones.
Line no | Variables |
---|---|
1 | total = 0 |
2 | total = 0 char = ‘t’ |
3 | total = 1 char = ‘t’ |
2 | total = 1 char = ‘i’ |
3 | total = 2 char = ‘i’ |
2 | total = 2 char = ‘n’ |
3 | total = 3 char = ‘n’ |
Practica Acumulando (continued)
Crea un acrónimo: A partir de la lista
["red", "green", "blue"]
, crea el acrónimo
"RGB"
usando un bucle for.
Pista: Puede que necesites usar un método de cadena para formatear correctamente el acrónimo.
Suma Acumulada
Reordena y aplica la sangría adecuada a las líneas de código
siguientes para que impriman una lista con la suma acumulada de datos.
El resultado debe ser [1, 3, 5, 10]
.
Identificación de errores de nombres de variables
- Lee el siguiente código e intenta identificar cuáles son los errores sin ejecutarlo.
- Ejecuta el código y lee el mensaje de error. ¿Qué tipo de
NameError
crees que es? ¿Es una cadena sin comillas, una variable mal escrita, o una variable que debería haber sido definida pero no lo fue? - Corrige el error.
- Repita los pasos 2 y 3, hasta que haya corregido todos los errores.
- Los nombres de variables en Python distinguen entre mayúsculas y
minúsculas:
number
yNumber
se refieren a variables diferentes. - La variable
message
debe inicializarse como una cadena vacía. - Queremos añadir la cadena
"a"
amessage
, no la variable indefinidaa
.
Identificación de errores de posición
Puntos Clave
- Un bucle for ejecuta órdenes una vez por cada valor de una colección.
- Un bucle
for
se compone de una colección, una variable de bucle y un cuerpo. - La primera línea del bucle
for
debe terminar con dos puntos, y el cuerpo debe tener sangría. - La sangría siempre tiene sentido en Python.
- Las variables de bucle pueden llamarse como se quiera (pero se recomienda encarecidamente dar un nombre significativo a la variable de bucle).
- El cuerpo de un bucle puede contener muchas sentencias.
- Utilice
range
para iterar sobre una secuencia de números. - El patrón Acumulador convierte muchos valores en uno.