Calcul moyenne python

Signaler
-
 Beni-Kujaku -
Bonjour,

Je souhaite calculer la moyenne des valeurs de la liste L2 du script ci-dessous :

L2=[1,3,4,5,10,3]
def moyenne(L2):
m=0
for i in L2:
  m += i//len(L2)
return (m)


Cependant la moyenne affichée n'est pas correcte, pouvez m'expliquer ?
Merci

Cordialement,
Un apprenti en python


Configuration: Windows / Edge 17.17134

2 réponses

Messages postés
12586
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 octobre 2020
700
bonjour, avant tout, merci d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
ensuite, peux-tu expliquer comment tu affiches la moyenne, et ce que tu obtiens?
en passant, il est préférable de ne pas utiliser les mêmes noms de variable dans et hors la fonction.
finalement, il y a une instruction magique, print, qui peux t'aider à comprendre le comportement de ton programme:
def moyenne(L):
 m=0
 for i in L:
  a=i//len(L)
  m += a
  print(i,a,m)
 return (m)
Le problème ici vient du double slash pour diviser. // signifie "diviser et arrondir à l'inférieur", donc dans ton cas, par exemple, 1//6=0 et le 1 n'est pas pris en compte dans la moyenne. Pour résoudre ça, tu peux utiliser le simple / et écrire tes nombres 1.0, 3.0... Pour que Python comprenne bien qu'il travaille avec des nombres qui peuvent ne pas être entiers (des floats).