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 :

Return qui écrase une liste


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    REA
    Inscrit en
    Juin 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : REA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2014
    Messages : 20
    Points : 30
    Points
    30
    Par défaut Return qui écrase une liste
    Bonjour à tous :-)

    Je débute en python.
    J'ai un souci avec mon code et j'ai beau tourner le truc dans tous les sens, je ne vois pas mon erreur.
    Voilà mon code :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    lloyd = {
        "name": "Lloyd",
        "homework": [90.0, 97.0, 75.0, 92.0],
        "quizzes": [88.0, 40.0, 94.0],
        "tests": [75.0, 90.0]
    }
    alice = {
        "name": "Alice",
        "homework": [100.0, 92.0, 98.0, 100.0],
        "quizzes": [82.0, 83.0, 91.0],
        "tests": [89.0, 97.0]
    }
    tyler = {
        "name": "Tyler",
        "homework": [0.0, 87.0, 75.0, 22.0],
        "quizzes": [0.0, 75.0, 78.0],
        "tests": [100.0, 100.0]
    }
     
    # Add your function below!
    def average(numbers):
        total = sum(numbers)
        total = float(total)
        return total / len(numbers)
     
    def get_average(student):
        homework = average(student["homework"])
        quizzes = average(student["quizzes"])
        tests = average(student["tests"])
        return (homework * 0.1) + (quizzes * 0.3) + (tests * 0.6)
     
    def get_letter_grade(score):
        if type(score == int) or type(score) == float:
            if score >= 90:
                return "A"
            elif score >= 80:
                return "B"
            elif score >= 70:
                return "C"
            elif score >= 60:
                return "D"
            else:
                return "F"
        else:
            return "Saisie incorrecte"
     
    print "Moyenne de Lloyd : " + str(get_average(lloyd))
    print "Moyenne de Alice : " + str(get_average(alice))
    print "Moyenne de Tyler : " + str(get_average(tyler))
    print
    def get_class_average(students):
        #print "Debut fonction : " + str(students)
        results = []
        for student in students:
            #average_student = get_average(student)
            #print average_student
            results.append(get_average(student))
            print "Array_results : " + str(results)
            print average(results)
            print "Moyenne : " + str(average(results))
            #return average(results)
     
    students = [alice, lloyd, tyler]
    print get_class_average(students)
    C'est plein de prints parce que j'essayais de trouver ce qui clochait.

    Tant que mon return est commenté, tout va bien.
    Résultat dans la "console" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Moyenne de Lloyd : 80.55
    Moyenne de Alice : 91.15
    Moyenne de Tyler : 79.9
     
    Array_results : [91.14999999999999]
    91.15
    Moyenne : 91.15
    Array_results : [91.14999999999999, 80.55]
    85.85
    Moyenne : 85.85
    Array_results : [91.14999999999999, 80.55, 79.9]
    83.8666666667
    Moyenne : 83.8666666667
    Mais quand je réactive mon return :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Moyenne de Lloyd : 80.55
    Moyenne de Alice : 91.15
    Moyenne de Tyler : 79.9
     
    Array_results : [91.14999999999999]
    91.15
    Moyenne : 91.15
    91.15
    Ça ne prend plus qu'un des items de la liste :-(

    Merci d'avance pour votre aide.

  2. #2
    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 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je crois que tu as un problème d'indentation : ton return est dans la boucle donc à la première itération, la fonction se termine.

    Réduis son indentation d'un cran pour que la boucle se fasse sur tous les éléments.

  3. #3
    Membre actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Points : 215
    Points
    215
    Par défaut
    @Bktero : Tu parles de la fonction def get_class_average() et du dernier return ,non ?
    _""""Cats have a big heart ^^ unlike some bad people (whose will never change in their brain) """

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    REA
    Inscrit en
    Juin 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : REA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2014
    Messages : 20
    Points : 30
    Points
    30
    Par défaut Mille mercis
    Merci pour ta réponse, rapide de surcroit.

    Erreur toute bête :-(
    Je l'aurais parié que ça allait être un truc aussi basique. J'ai passé une heure là-dessus, mais ça ne m'est pas venu à l'idée.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    REA
    Inscrit en
    Juin 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : REA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2014
    Messages : 20
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Kurodiam Voir le message
    @Bktero : Tu parles de la fonction def get_class_average() et du dernier return ,non ?
    Merci pour ton intérêt mais c'était bien l'indentation du return qui cassait la boucle

    Tout est ok

  6. #6
    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 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kurodiam Voir le message
    @Bktero : Tu parles de la fonction def get_class_average() et du dernier return ,non ?
    Oui. En parcourant rapidement, j'ai vu ce return commenté et le symptôme correspondait

    @HaraKity : tu peux donc cliquer sur le bouton en bas de page

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par HaraKity Voir le message
    J'ai passé une heure là-dessus, mais ça ne m'est pas venu à l'idée.
    D'où l'avantage à prendre l'habitude de fermer chaque bloc par un commentaire
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def fct():
        for student in students:
            #average_student = get_average(student)
            #print average_student
            results.append(get_average(student))
            print "Array_results : " + str(results)
            print average(results)
            print "Moyenne : " + str(average(results))
            return average(results)
        # for
    # fct()
    On voit alors immédiatement le pb du return qui n'est pas à sa bonne place...
    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]

Discussions similaires

  1. Fonction qui trie une liste
    Par piotrr dans le forum Général Python
    Réponses: 3
    Dernier message: 11/05/2007, 15h00
  2. Changer une fonction qui utilise une liste par un tableau!
    Par sara21 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 13h18
  3. Fonction qui renvoie une liste
    Par la_praline dans le forum GTK+ avec C & C++
    Réponses: 20
    Dernier message: 20/04/2007, 21h22
  4. [MySQL] Fonction qui génère une liste
    Par Marco85 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/03/2007, 13h37
  5. methode qui retourne une liste d'objets du meme type
    Par anoukhan dans le forum Oracle
    Réponses: 8
    Dernier message: 12/01/2006, 18h38

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