IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comportement que je ne comprends pas [Python 3.X]


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Comportement que je ne comprends pas
    Bonjour,

    Ce code boucle sur des saisies de nombres et affiche en temps réel le nombre de saisie et la moyenne des nombres entrés.
    On sort en saisissant un nombre négatif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    tt = []
    avg = 0
    i, n = 0, 1
    while True:
          tt.append(float(input("Entrez une note : ")))
     
          if tt[i] < 0:
                del(tt[i])
                break
     
          print("NOMBRE de note(s) saisie(s) =", n)
          avg = (avg + tt[i]) / n
          print("MOYENNE de(s) note(s) saisie(s) =", avg)
     
          i = i + 1
          n = n + 1
    Le calcul des moyennes fonctionne bien sur 2 saisies à la troisième les chiffres sont faux.
    Même si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...print("NOMBRE de note(s) saisie(s) =", n)
          avg = avg + tt[i]
          avg = avg / n
          print("MOYENNE de(s) note(s) saisie(s) =", avg)...
    Tout fonctionne parfaitement bien si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...print("NOMBRE de note(s) saisie(s) =", n)
          avg = avg + tt[i]
          print("MOYENNE de(s) note(s) saisie(s) =", avg / n)...
    ou en ajoutant une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...print("NOMBRE de note(s) saisie(s) =", n)
          tot = tot + tt[i]
          avg = tot / n
          print("MOYENNE de(s) note(s) saisie(s) =", avg)...
    je ne comprends pas pourquoi, pouvez-vous m'éclairer SVP?

  2. #2
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour,

    cela ne marche plus à la troisième saisie car l'algorithme est faux.

    Il faut soit additionner toutes les notes à chaque fois, soit faire moyenne = ( (moyenne_précédente * (n-1) + note ) / n

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bien sur, j'ai 2 valeurs pour 1 emplacement...
    J'aurai dû vérifier en affichant la moyenne tout au long du processus.

    Merci beaucoup pour ta réponse ((moyenne_précédente * (n-1) + note ) / n, qui m'a bien fait cogiter)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête ayant un comportement que je ne comprends pas
    Par Kropernic dans le forum Développement
    Réponses: 0
    Dernier message: 08/09/2011, 12h25
  2. comportement que je ne comprend pas
    Par etienne.clopeau dans le forum Général Python
    Réponses: 15
    Dernier message: 17/07/2010, 23h37
  3. Réponses: 3
    Dernier message: 18/01/2010, 13h48
  4. comportement de ifstream que je ne comprend pas
    Par Michaeljackfan dans le forum Langage
    Réponses: 5
    Dernier message: 19/09/2009, 14h21
  5. [Rave] un message que je ne comprends pas
    Par Clotilde dans le forum Rave
    Réponses: 2
    Dernier message: 30/09/2003, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo