Tengo un script como este:
candela = {
"nombre":"Candela",
"tareas": [90, 97, 75, 92],
"pruebas": [88, 40, 94],
"examenes": [75, 90]
}
milagros = {
"nombre":"Milagros",
"tareas": [100.0, 92.0, 98.0, 100.0],
"pruebas": [82.0, 83.0, 91.0],
"examenes": [89.0, 97.0]
}
ramiro = {
"nombre":"Ramiro",
"tareas": [0.0, 87.0, 75.0, 22.0],
"pruebas": [0.0, 75.0, 78.0],
"examenes": [100.0, 100.0]
}
alumnos=[candela, milagros, ramiro]
for x in [0,1,2,3]:
print alumnos[x]["nombre"]
print alumnos[x]["tareas"]
print alumnos[x]["pruebas"]
print alumnos[x]["examenes"]
Y corre bien, hace lo que quiero, pero al último genera este error:
Traceback (most recent call last):
File "alumnos.py", line 22, in <module>
print alumnos[x]["nombre"]
IndexError: list index out of range
alumnos=[candela, milagros, ramiro]
for x in [0,1,2,3]:
Es decir primero le dices "tienes un array con 3 valores (candela, milagros, ramiro) pero necesito que me del el valor de los primeros 4 (0,1,2,3) que crees que sucederá al leer el cuarto valor(3)?
Si, ya entiendo era un error lógico, solo tenia que poner:
for x in [0,1,2]:
Porque el cuarto valor no existe xD :-)
Para simplificarlo mas puedes hacerlo de las siguientes 2 maneras
for x in range(3):
Range 3 retorna un array 3 valores empezando en 0
Pero mas simple aún
for x in alumnos:
Este ultimo es especialmente util cuando el array es asociativo o no sabes cuantos valores tiene