1. Pesos normalitzats (4 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.

Una manera de calcular una mitjana ponderada és normalitzant els pesos. Així, a partir d’una successió finita de pesos \(w_1, w_2, \ldots, w_n\), els pesos normalitzats es calculen com segueix:

\[w'_i = \frac{1}{\sum_{i = 1}^{n} w_i}\]

Al mòdul mitjanes (fitxer mitjanes.py), desa la funció següent:

mitjanes.normalitza_pesos(ps)

Calcula els pesos normalitzats.

Paràmetres:

ps – iterable de pesos (nombres)

Retorna:

iterador dels pesos de ps normalitzats

Tipus de retorn:

iterador de float

Per exemple:


>>> p = iter([0.3, 0.7, 0.45, 0.72, 1.35, 2.47])
>>> pn = normalitza_pesos(p)
>>> iter(pn) is pn
True
>>> lpn = list(pn)
>>> sum(lpn)
1.0
>>> list(round(x, 2) for x in lpn)
[0.05, 0.12, 0.08, 0.12, 0.23, 0.41]

Disposes d’un joc de proves més complet en el fitxer test-normalitza_pesos.txt.