Delegats de classe¶
Els alumnes d’una classe han escollit el/la seu delegat/da de classe. Les votacions s’han recollit en una llista on cada element és un vot. Es demana que dissenyeu les següents funcions, que haureu de desar al fitxer delegats.py:
- delegats.vots_cand(lvots, lcand)¶
Donada la llista dels vots lvots i la llista dels noms del candidats possibles lcand (tots els alumnes de la classe), retorna un diccionari de freqüències, és a dir, un diccionari que tingui com a claus tots els candidats possibles i com a valors el nombre de vots que han obtingut. A més, el diccionari ha de tenir la clau “nuls” que tindrà com a valor tots els vots nuls, és a dir els vots que no corresponen a cap candidat. Per exemple:
>>> lvots = ['Anna', 'Enric', 'Roger', 'Roger', 'Anna', 'Enric', ... 'Enric', 'Bart Simpson', 'Josep', 'Enric', 'Anna', 'Enric', 'Pol'] >>> lcand = ['Anna', 'Arnau', 'Enric', 'Josep', 'Roger', 'Pol','Zaira'] >>> vots_cand (lvots, lcand) == {'Anna': 3, 'Arnau':0, 'Enric': 5, ... 'Josep': 1, 'Pol': 1, 'Roger': 2, 'Zaira': 0, 'nuls': 1} True
Nota
Podeu descarregar el fitxer amb tests test_vots_cand.txt.
- delegats.quants_vots(dvots, nom)¶
Donat un diccionari com l’obtingut a la primera pregunta i un nom de candidat, retorni un tuple format per un booleà i un enter. Si el nom és al diccionari, el booleà serà True i l’enter serà el nombre de vots corresponent; en cas contrari, el booleà serà False i l’enter-1.
>>> d = {'Anna': 3, 'Arnau':0, 'Enric': 5, 'Josep': 1, ... 'Pol': 1, 'Roger': 2, 'Zaira': 0, 'nuls': 1} >>> quants_vots(d, 'Enric') (True, 5) >>> quants_vots(d, 'Pau') (False, -1)
Nota
Podeu descarregar el fitxer amb tests test_quants_vots.txt.
- delegats.percent_nuls(dvots)¶
Donat un diccionari de freqüències com el retornat per vots_cand, retorna el tant per cent de vots nuls respecte al vots totals. Suposeu que hi ha com a mínim un vot al diccionari. Per exemple,
>>> d = {'Anna': 3, 'Arnau':0, 'Enric': 5, 'Josep': 1, ... 'Pol': 1, 'Roger': 2, 'Zaira': 0, 'nuls': 1} >>> print("{:.2f}".format(percent_nuls(d))) 7.69
Nota
Podeu descarregar el fitxer amb tests test_percent_nuls.txt.
- delegats.guanya(dvots)¶
Donat un diccionari de freqüències com el retornat per vots_cand, retorna una llista ordenada alfabèticament amb els candidats guanyadors, és a dir els que han obtingut el nombre màxim de vots (la llista té més d’un element si hi ha empat). Per exemple,
>>> d = {'Anna': 3, 'Arnau':0, 'Enric': 5, 'Josep': 1, ... 'Pol': 1, 'Roger': 2, 'Zaira': 0, 'nuls': 1} >>> guanya(d) ['Enric'] >>> d = {'Anna': 3, 'Arnau':0, 'Enric': 5, 'Josep': 1, 'Pol': 1, ... 'Roger': 2, 'Zaira': 0, 'nuls': 1, 'Domenica': 5} >>> guanya(d) ['Domenica', 'Enric']
Nota
Podeu descarregar el fitxer amb tests test_guanya.txt.
Solució
Disposeu d’una solució al fitxer delegats.py.