Notes¶
La llista de notes d’un lliurament està formada per subllistes de dos
elements: el dni de l’alumne (un string) i la seva nota (un real).
Dissenya les següents funcions i desa-les al fitxer notes.py:
busca_dni, donats una llista de notes i un dni, retorna True si el dni donat és a la llista i False en cas contrari.
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['11111111A',7.25],['88888888H',4.1],['22222222B',3.8]] >>> busca_dni(l,'88888888H') True >>> busca_dni(l,'33333333C') False >>> busca_dni([],'11111111A') False
Nota
Pots descarregar el fitxer amb tests
test-notes-1.txt.busca_nota donats una llista de notes i una nota, retorna True si un o més alumnes de la llista han obtingut la nota donada i False en cas contrari
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['11111111A',7.25],['88888888H',4.1],['22222222B',3.8]] >>> busca_nota(l,7.25) True >>> busca_nota(l,5.0) False >>> busca_nota([],6.5) False
Nota
Pots descarregar el fitxer amb tests
test-notes-2.txt.perc_aprovats: donada una llista de notes, retorna el tant per u d’alumnes aprovats de la llista. Podeu suposar que la llista no és buida.
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['11111111A',7.25],['88888888H',4.1],['22222222B',3.8],['66666666F',5.3]] >>> round(perc_aprovats(l), 2) 0.6 >>> l = [['3A', 5]] >>> round(perc_aprovats(l), 2) 1.0 >>> l = [['1A', 2], ['2B', 1], ['3C', 4]] >>> round(perc_aprovats(l), 2) 0.0
Nota
Pots descarregar el fitxer amb tests
test-notes-3.txt.millor_pitjor_nota: donada una llista de notes, retorna la millor i la pitjor nota obtinguda. Podeu suposar que la llista no és buida.
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['11111111A',7.25],['88888888H',4.1],['22222222B',3.8],['66666666F',5.3]] >>> m, p = millor_pitjor_nota(l) >>> round(m, 2) 8.3 >>> round(p, 2) 3.8 >>> l = [['3A', 5]] >>> m, p = millor_pitjor_nota(l) >>> round(m, 2) 5 >>> round(p, 2) 5
Nota
Pots descarregar el fitxer amb tests
test-notes-4.txt.distribucio_notes: donada una llista de notes, retorna una altra llista de 11 elements que representa la distribució de les notes entre 0 i 10: el primer element de la llista és el nombre d’alumnes amb nota compresa entre 0 (inclòs) i 1 (exclòs), el segon element de la llista és el nombre d’alumnes amb nota compresa entre 1 (inclòs) i 2 (exclòs), i així successivament fins a l’onzè element que representa el nombre d’alumnes que han tret un 10. Podeu suposar que la llista no és buida.
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['88888888H',4.1],['22222222B',4.8],['66666666F',5.3],['99999999J',10.0]] >>> dn = distribucio_notes(l) >>> print(dn) [0, 0, 0, 0, 2, 1, 0, 0, 1, 0, 1] >>> l = [['3A', 5]] >>> dn = distribucio_notes(l) >>> print(dn) [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] >>> l = [['1A', 2], ['2B', 1], ['3C', 4]] >>> dn = distribucio_notes(l) >>> print(dn) [0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0]
Nota
Pots descarregar el fitxer amb tests
test-notes-5.txt.dnis_10: donada una llista de notes, retorna la llista dels dnis dels alumnes que tenen un 10, ordenada per DNIs creixents.
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['88888888H',10.0],['33333333C',10.0],['22222222B',4.8],['66666666F',5.3],['99999999J',10.0]] >>> ld = dnis_10(l) >>> print(ld) ['33333333C', '88888888H', '99999999J'] >>> l = [['3A', 10]] >>> ld = dnis_10(l) >>> print(ld) ['3A'] >>> l = [['3A', 5]] >>> ld = dnis_10(l) >>> print(ld) []
Nota
Pots descarregar el fitxer amb tests
test-notes-6.txt.ordena_dnis: donada una llista de notes, retorna una nova llista, ordenada per DNIs creixents.
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['88888888H',10.0],['33333333C',10.0],['22222222B',4.8],['66666666F',5.3],['99999999J',10.0]] >>> ld = ordena_dnis(l) >>> for e in ld: ... print(e[0], e[1]) ... 22222222B 4.8 33333333C 10.0 44444444D 8.3 66666666F 5.3
Nota
Pots descarregar el fitxer amb tests
test-notes-7.txt.ordena_notes: donada una llista de notes, retorna una nova llista ordenada per notes.
La funció ha de passar els tests següents, com a mínim:
>>> l = [['44444444D',8.3],['88888888H',10.0],['22222222B',4.8],['66666666F',5.3]] >>> ld = ordena_notes(l) >>> for e in ld: ... print(e[0], e[1]) ... 22222222B 4.8 66666666F 5.3 44444444D 8.3 88888888H 10.0
Nota
Pots descarregar el fitxer amb tests
test-notes-8.txt.
Solució
El fitxer notes.py conté una solució.