def decodifica(linia):
    l_linia = linia.split(':')
    # El nom està a l'índex 0
    nom = l_linia[0]
    # Calculem la mitjana a partir de la resta d'elements
    s = 0
    for nota in l_linia[1:]:
        # La nota és un string. Cal convertir-la a un nombre abans
        # d'operar amb ella
        s = s + float(nota)
    mitjana = s / (len(l_linia) - 1)
    return mitjana, nom

def millors(nom_fitxer):
    with open(nom_fitxer) as f:
        # Calculem una llista de tuples (mitjana, nom) extrets de cada
        # línia del fitxer
        alumnes = []
        for linia in f:
            alumnes.append(decodifica(linia))
    # Ordenem la llista en ordre invers
    alumnes.sort(reverse=True)
    # Extraiem els noms dels 10 primers elements
    noms = []
    for _, nom in alumnes[:10]:
        noms.append(nom)
    return noms
