El Estudiante se Vuelve Profesor: Has el cálculo y observa ("for" "in")


#1

A mi me da el mismo error.

Sigo sin comprender porqué si el resultado final es correcto.
¿alguien podrá ayudarme?

Lloyd = {
    "nombre":"Lloyd",
    "tareas": [90,97,75,92],
    "pruebas": [ 88,40,94],
    "examenes": [ 75,90]
    }
Alice = {
    "nombre":"Alice",
    "tareas": [100,92,98,100],
    "pruebas": [82,83,91],
    "examenes": [89,97]
    }
Tyler = {
    "nombre":"Tyler",
    "tareas": [0,87,75,22],
    "pruebas": [0,75,78],
    "examenes": [100,100]
    }
alumnos = [Lloyd,Alice,Tyler]

def promedio(x): 
    for x in alumnos:
        pro_tareas = (sum(x[("tareas")])/ len(x[("tareas")]))
        pro_pruebas = (sum(x[("pruebas")]) / len(x[("pruebas")]))
        pro_examenes = (sum(x[("examenes")]) / len(x[("examenes")]))
        pro_final = (pro_tareas+pro_pruebas+pro_examenes)/3
        print "Pomedio final:" + " " + x["nombre"]
        print pro_final
    return pro_final

def calcularPromedio(x): 
    for x in alumnos:
        pro_tareas = (sum(x[("tareas")])/ len(x[("tareas")]))*.1
        pro_pruebas = (sum(x[("pruebas")]) / len(x[("pruebas")]))*.3
        pro_examenes = (sum(x[("examenes")]) / len(x[("examenes")]))*.6
        pro_final = (pro_tareas+pro_pruebas+pro_examenes)
        print "Pomedio final:" + " " + x["nombre"]
        print pro_final
    return pro_final

print calcularPromedio(alumnos)

El estudiante se vuelve profesor: Has el cálculo y observa
#2

Esto debería ser el cálculo de una media de media, no un promedio ponderado.


#3

No estaría enteniendo, eso es el resultado del ejercicio anterior que me dió bien.

¿Que sería el calculo de una media de medida?

Y por qué cuando pido el ponderado me lo da como error?

Gracias


#4

Per instructions...

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

Short form...

def promedio(x):
    return float(sum(x)) / len(x)

#5

Me sigue dando el mismo error, a pesar de que lo corroboro en excel y el promedio ponderado que obtengo es correcto, no logro entender donde está el error.
(ya cambié lo que me dijiste, pero no logro llamar al diccionario en esa función que vos me compartis , como llamo a una lista en una función)

19 alumnos = [Lloyd,Alice,Tyler]
20 
21 def promedio(x): 
22    return float(sum(x)) / len(x)
23
24 print promedio(alumnos)

#6

Lo solucioné así, pero no entiendo, por qué ahora me deja llamar a la lista, y porqué de la otra manera no me lo tomaba.

def calcularPromedio(x): 
    pro_tareas = (sum(x[("tareas")])/ len(x[("tareas")]))
    pro_pruebas = (sum(x[("pruebas")]) / len(x[("pruebas")]))
    pro_examenes = (sum(x[("exámenes")]) / len(x[("exámenes")]))
    pro_final = (pro_tareas*.1+pro_pruebas*.3+pro_examenes*.6)
    print "Pomedio final:" + " " + x["nombre"]
    return pro_final
    
print calcularPromedio(Lloyd)

#7
print promedio(Lloyd)

Promedio toma un diccionario.

Utilice la función media ...

def calcularPromedio(x):
    tareas = promedio(x['tareas']) * 0.1
    pruebas = promedio(x['pruebas']) * 0.3
    exámenes = promedio(x['exámenes']) * 0.6
    return tareas + pruebas + exámenes

#8

Mil gracias, paso como quedo y explico como acciona cada función y como se conecta con la otra por si alguien más entra y le sirve! gracias!

Lloyd = {
    "nombre":"Lloyd",
    "tareas": [90,97,75,92],
    "pruebas": [ 88,40,94],
    "exámenes": [ 75,90]
    }
Alice = {
    "nombre":"Alice",
    "tareas": [100,92,98,100],
    "pruebas": [82,83,91],
    "exámenes": [89,97]
    }
Tyler = {
    "nombre":"Tyler",
    "tareas": [0,87,75,22],
    "pruebas": [0,75,78],
    "exámenes": [100,100]
    }
alumnos = [Lloyd,Alice,Tyler]

def promedio(x): 
    return float(sum(x)) / len(x)
# Primero creo una función que saca el promedio normal. Esta función suma el total de "x", un valor que se le va a asignar a la función, nosotros en este caso queremos que sean listas que están dentro del diccionario.


def calcularPromedio(x): 
    tareas = promedio(x["tareas"])*.1
    pruebas = promedio(x["pruebas"])*.3
    examenes = promedio(x["exámenes"])*.6
    print "Pomedio final:" + " " + x["nombre"]
    return (tareas + pruebas + examenes)
# Acá le pido que llame a la función promedio con la lista que está dentro del diccionario que va a ser nuestro valor "x",y los podere. Por úlitmo le pedimos los sume para hacer un promedio final ponderado. 

print calcularPromedio(Lloyd)
# En la sentencia Print se coloca el diccionario, ya que es quien contiene las listas "tareas" "pruebas" y "exámenes" que están siendo llamadas en la función.