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 :

Réutiliser la valeur calculée d'une fonction [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut Réutiliser la valeur calculée d'une fonction
    Bonjour à tous, je suis nouveau sur le forum

    Mon but est faire rentrer des notes par l'utilisateur, de les placer dans une liste et une fois finit d'en faire la moyenne de manière manuel, sans appel a la fonction sum mais uniquement avec len.
    Par conséquent j'ai fais le bout de code ci-dessous mais le problème c'est que lorsque je définit la fonction moyenne, il ne récupère pas la valeur de la fonction liste.

    Pourriez vous me dire quoi corriger sur la deuxième partie afin qu'elle récupère la valeur de la def liste()

    Le problème en image est ici : http://prntscr.com/hh02ao

    Il me demande d'entrer les valeurs, affiche la liste puis me redemande d'entrer les valeur et affiche la moyenne..

    Je voudrais entrer les valeurs et uniquemet après il m'affiche la liste ainsi que la moyenne..
    Merci


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    def liste():
      liste = []
      i=0
      notes=1
      while notes > 0:
        notes=float(input("Merci de saisir une note"))
        if notes > 0:
          liste.append(notes)
        i=i+1  
      return(liste)  
    print(liste())
     
     
    #FONCTIONNE JUSQU'A AU DESSUS 
     
     
    def moyenne(liste):
      s=0
      for i in range(len(liste)):
        s=s+liste[i]
        moyenne = s/len(liste)
      return moyenne
    print(moyenne(liste()))

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Whisper40 Voir le message
    Il me demande d'entrer les valeurs, affiche la liste puis me redemande d'entrer les valeur et affiche la moyenne..
    Ben oui, tu appelles deux fois ta fonction liste() (une fois dans le print() et une fois dans moyenne()). je ne vois pas ce qu'il y a d'étonnant à ce qu'elle s'exécute donc deux fois...

    Citation Envoyé par Whisper40 Voir le message
    Je voudrais entrer les valeurs et uniquemet après il m'affiche la liste ainsi que la moyenne..
    Tu ne l'appelles qu'une fois, quitte à sauvegarder son résultat si tu as besoin de l'utiliser plusieurs fois. Ca sert à ça une variable !!!
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto=liste()
    print toto, moyenne(toto)

    PS: nommer sa fonction "liste" (alors qu'il existe déjà un type "list") c'est pas des plus originals. Tu ne voudrais pas l'appeler d'un nom plus marquant comme par exemple "saisie_notes" ?
    PS2: ta variable "i" dans la fonction liste ? utile ?? pas utile ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def moyenne(liste):
      s=0
      for i in range(len(liste)):
        s=s+liste[i]
        moyenne = s/len(liste)
      return moyenne
    print(moyenne(liste()))
    Il faut attention à l'indentation en Python.

    Ici, moyenne = s/len(liste) est fait à chaque tout de boucle.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Bonjour,

    pour rendre le code plus lisible, il ne faut hésiter à donner noms explicites aux variables/arguments/fonctions....
    Par exmple le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def moyenne(liste):
      s=0
      for i in range(len(liste)):
        s=s+liste[i]
        moyenne = s/len(liste)
      return moyenne
    print(moyenne(liste()))
    deviendrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def moyenne(notes):
      somme_notes=0
      for note in notes:
        somme_notes=somme_notes+note
     
      moyenne = somme_notes/len(notes)
      return moyenne
    print(moyenne(liste()))
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponses j'ai pu terminer ce que je souhaitais, je suis désormais sur un autre projet avec quelques problèmes sur un nouveau thread

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/06/2006, 18h41
  2. [SQL] php et recuperation d'une valeur renvoyée par une fonction sql
    Par highman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2006, 16h42
  3. comment recuperer une valeur retournée d'une fonction javascript?
    Par megapacman dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 13/06/2006, 15h53
  4. Réponses: 5
    Dernier message: 13/03/2006, 16h21
  5. valeur retournée d'une fonction
    Par jokos2000 dans le forum Oracle
    Réponses: 8
    Dernier message: 29/06/2005, 13h21

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