Calcolare la media aritmetica escludendo una percentuale prefissata di valori agli estremi
LISTA = [3, 7, 8, 4, 4, 9, 6, 8, 7, 6] # Sequenza di voti
perc = 0.20 # Percentuale da troncare
Nella prima fase bisogna calcolare il numero di voti da escludere
...
N = len(LISTA) # 10, Numero di elementi
pN = int(p*N) # 2, Numero di elementi da troncare
pN2 = pN//2 # 1, Numero di elementi da troncare da un lato
NN = N-pN # 8, Numero di elementi effettivamente elaborati
...
Soluzione 1
Se i numeri sono ordinati è sufficiente escludere dalla somma i primi pN2 e gli ultimi pN2
...
lista = sorted(LISTA)
totale = 0
for i in range(pN2, N-pN2):
totale += lista[i]
media = totale/NN
Soluzione 2
Usa la funzione predefinita sum() applicata alla sottolista
...
lista = sorted(LISTA)
totale = sum(lista[pN2 : -pN2])
media = totale/NN
Soluzione 3
Senza ordinare la lista?
Individua i valori minimi e massimi e li rimuove dalla lista (?)
...
lista = LISTA[:] # Copia tutta la lista
for i in range(pN2):
minimo = min(lista); lista.remove(minimo)
massimo = max(lista); lista.remove(massimo)
totale = sum(lista)
media = totale/NN