El Estudiante Se Vuelve Profesor, ÚLTIMO PASO[SOLVED]


#1

Ayudaaaaa, no puedo encontrar el error, pruebo todo por separado y anda joya, pero cuando quiero mostrar por pantalla el promedio de la clase me tira error en** sacar_promedio_alumno**

candela = {
"nombre": "Candela",
"tareas": [90.0, 97.0, 75.0, 92.0],
"pruebas": [88.0, 40.0, 94.0],
"examenes": [75.0, 90.0]
}
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]

¡Agregá tu función acá abajo!

def promedio(numeros):
total = float(sum(numeros)) / len(numeros)
return total

def sacar_promedio(alumno):
tareas = promedio(alumno['tareas']) * 0.1 EN ESTA PARTE ME TIRA ERROR
pruebas = promedio(alumno['pruebas']) * 0.3
examenes = promedio(alumno['examenes']) * 0.6
total = tareas + pruebas + examenes
return total

def calificaciones_con_letras(resultado):
if resultado >= 90:
return "A"
elif resultado >= 80:
return "B"
elif resultado >= 70:
return "C"
elif resultado >= 60:
return "D"
else:
return "F"

def obtener_promedio_clase(alumnos):
puntajes = []
for alumno in alumnos:
puntajes.append(sacar_promedio(alumno))
return sacar_promedio(puntajes) ACA ESTA EL ERROR

print obtener_promedio_clase(alumnos)
print calificaciones_con_letras(obtener_promedio_clase(alumnos))

El error es el siguiente: Traceback (most recent call last):
File "python", line 51, in
File "python", line 49, in obtener_promedio_clase
File "python", line 27, in sacar_promedio
TypeError: list indices must be integers, not str

Estaba usando una función acá para sacar el promedio que no era, no entiendo nada son las 4.50 a.m. es entendible... jaja


#2

Aqui tienes el código completo de la solución para que lo analices.

candela = {
"nombre": "Candela",
"tareas": [90.0, 97.0, 75.0, 92.0],
"pruebas": [88.0, 40.0, 94.0],
"examenes": [75.0, 90.0]
}

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]
}

¡Agregá tu función acá abajo!

def promedio(numeros):
total = sum(numeros)
total = float(total)
total = total / len(numeros)
return total

def sacar_promedio(alumno):
tareas = promedio(alumno["tareas"])
pruebas = promedio(alumno["pruebas"])
examenes = promedio(alumno["examenes"])

ptareas = tareas * 0.1
ppruebas = pruebas * 0.3
pexamenes = examenes * 0.6

spromedios = ptareas + ppruebas + pexamenes
return spromedios

def calificaciones_con_letras(resultado):
if resultado >= 90:
return "A"
elif resultado >= 80:
return "B"
elif resultado >= 70:
return "C"
elif resultado >= 60:
return "D"
else:
return "F"

def obtener_promedio_clase(alumnos):
puntajes = []

for alumno in alumnos:
    promedios = sacar_promedio(alumno)
    puntajes.append(promedios)
print puntajes
return promedio(puntajes)

alumnos = [
candela,
milagros,
ramiro
]

print obtener_promedio_clase(alumnos)
print calificaciones_con_letras(obtener_promedio_clase(alumnos))