El estudiante se vuelve profesor, lección 4 para dejar constancia


#1

hola, en este ejercicio me está dadon un error pero no comprendo muy bien a que se debe, he probado varias maneras de solucionarlo y no consigo dar con la buena.

mi codigo:

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 i in range (len(alumnos)):
print alumnos[i]['nombre'] + ' ' + alumnos[i]['nombre']
print str(alumnos[i]['tareas']) + ' ' + alumnos[i]['nombre']
print str(alumnos[i]['pruebas']) + ' ' + alumnos[i]['nombre']
print str(alumnos[i]['examenes']) + ' ' + alumnos[i]['nombre']

el output:

Candela Candela
[90, 97, 75, 92] Candela
[88, 40, 94] Candela
[75, 90] Candela
Milagros Milagros
[100.0, 92.0, 98.0, 100.0] Milagros
[82.0, 83.0, 91.0] Milagros
[89.0, 97.0] Milagros
Ramiro Ramiro
[0.0, 87.0, 75.0, 22.0] Ramiro
[0.0, 75.0, 78.0] Ramiro
[100.0, 100.0] Ramiro
None

el error:

¡Uy! Probá otra vez. ¿Mostraste en pantalla el nombre de cada alumno? Parece que "Candela" no se imprimió.

No entiendo muy bien por qué da ese error...


#2

vale ya está solucionado, no hay que mostrar todo el rato el nombre del alumno como pone en el ejercicio, la respuesta es algo asi como:

alumnos=[Candela,Milagros,Ramiro]
for i in range (len(alumnos)):
print alumnos[i]['nombre']
print str(alumnos[i]['tareas'])
print str(alumnos[i]['pruebas'])
print str(alumnos[i]['examenes'])

el str no hace falta, y se puede hacer con dos for:

for e in alumnos:
for j in e:
print j


#3

str no hace falta, funciona incluso sin el segundo for. Lo que me gustaría saber es la explicación exacta de por qué tiene que ser el for así:
range(len(alumnos))

Si me lo podrías explicar te lo agradecería ya que no me ha quedado muy claro de por qué necesitas len y range. Sin una de ellas no funciona.


#4

For x in range (y) es una funcionalidad de python. Basicamente te esta diciendo que para x=0 hasta llegar a y hagas lo que este dentro del for. Por ello for i in range (len(y)): siendo la variable dentro del len una lista te da el numero de posiciones y puedes recorrer una lista.