Reconeixement¶
L’ETSEIB, com cada any, vol fer un reconeixement als 10 millors estudiants de cada curs. Per aquest motiu ens demanen la nostra ajuda.
Es disposa d’un fitxer amb una línia que conté la següent informació per cada estudiant:
NOM_ESTUDIANT:NOTA1:NOTA2:NOTA3:NOTA4:NOTA5
és a dir, el nom de l’estudiant (string) i cinc notes (valors reals
entre 0.0 i 10.0). Tant el nom com cadascuna de les notes estan
separats pel caràcter ’:’ (dos punts). Per exemple, el fitxer
dades.txt conté el següent:
Cristiano Ronaldo:3.4:3.1:2.3:5.0:1.3
Lionel Messi:3.4:3.1:3.2:5.0:1.3
Diego Costa:5.4:3.1:3.2:5.0:5.3
Alexis Sánchez:5.4:6.1:1.2:5.0:6.3
Karim Benzema:5.4:6.1:7.2:5.0:6.3
Adúriz:5.4:6.1:1.2:8.0:6.3
Carlos Vela:5.4:6.1:3.2:5.0:6.3
Antoine Griezmann:5.4:8.1:7.2:5.0:6.3
Gareth Bale:5.4:6.1:5.2:5.0:6.3
Kevin Gameiro:5.4:6.5:8.2:5.0:6.3
Pedro:5.4:6.1:1.2:5.0:10.0
Javi Guerra:5.4:6.1:1.2:5.0:6.5
Ikechukwu Uche:8.4:6.1:7.2:5.0:6.3
Carlos Bacca:5.4:6.9:9.2:5.0:6.3
Nolito:5.4:6.1:1.2:5.0:6.3
Dissenya i desa les funcions següents al mòdul reconeixement
(fitxer reconeixement.py):
La funció
decodifica()que a partir d’un string que conté una línia del fitxer amb les dades d’un estudiant, retorni un tuple amb dos valors: la nota mitjana de l’estudiant (real) i el seu nom (string).Per exemple:
>>> mitjana, nom = decodifica('Cristiano Ronaldo:3.4:3.1:2.3:5.0:1.3') >>> round(mitjana, 2), nom (3.02, 'Cristiano Ronaldo') >>> mitjana, nom = decodifica('Lionel Messi:3.4:3.1:3.2:5.0:1.3') >>> round(mitjana, 2), nom (3.2, 'Lionel Messi')
Disposeu de més jocs de proves al fitxer
tests-decodifica.txt.La funció
millors()que, a partir del nom d’un fitxer on hi ha les notes de cadascun dels estudiants d’un curs, retorni una llista amb els nom dels 10 estudiants que tenen la mitjana més alta, ordenats de més a menys nota. Aquesta funció ha de cridar l’anterior.Per exemple:
>>> m = millors('dades.txt') >>> m[:4] ['Ikechukwu Uche', 'Carlos Bacca', 'Antoine Griezmann', 'Kevin Gameiro'] >>> m[4:] ['Karim Benzema', 'Gareth Bale', 'Pedro', 'Adúriz', 'Carlos Vela', 'Javi Guerra']
Disposeu de més jocs de proves al fitxer
tests-millors.txt.
Solució
Disposeu d’una solució al fitxer reconeixement.py