Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exception incomprise

Sujet résolu
    5 janvier 2022 à 19:16:47

    Salut comment vous allez ? Je ne comprend pas c'est exceptions, j'ai essayer de faire des recherches mais rien trouvé qui pourrais m'aider. Je vous laisse mon code pour que vous puissiez mieux comprendre:

    historiques = [
        {
            "nom_produit": "pomme",
            "quantite_produit": 15
        },
        {
            "nom_produit": "orange",
            "quantite_produit": 10
        },
        {
            "nom_produit": "viande",
            "quantite_produit": 15
        },
        {
            "nom_produit": "fraise",
            "quantite_produit": 10
        },
        {
            "email": "afri@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 15
        },
        {
            "email": "afri@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 15
        },
        {
            "email": "popo@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 10
        },
        {
            "email": "popo@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 10
        },
        {
            "email": "popo@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 2
        },
        {
            "email": "popo@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 3
        },
        {
            "email": "popo@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 1
        },
        {
            "email": "popo@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 10
        },
        {
            "email": "popo@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 5
        },
        {
            "email": "afri@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 15
        },
        {
            "email": "popo@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 2
        },
        {
            "email": "popo@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 3
        },
        {
            "email": "afri@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 2
        },
        {
            "email": "popo@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 2
        },
        {
            "email": "popo@gmail.com",
            "produit": "pomme",
            "quantite_livraison": 2
        },
        {
            "email": "afri@gmail.com",
            "produit": "fraise",
            "quantite_livraison": 2
        },
        {
            "email": "popo@gmail.com",
            "produit": "orange",
            "quantite_livraison": 1
        }
    ] 
    
    print(" ---------- Bienvenue dans l'historique  ----------")
    
    historique = {}
    for historique_client in historiques:
        try:
            historique[historique_client["email"]][historique_client["produit"]] += historique_client["quantite_livraison"]                
        except KeyError:
            try:
                historique[historique_client["email"]].setdefault(historique_client["produit"], historique_client["quantite_livraison"])
            except KeyError:
                historique.setdefault(historique_client["email"], {historique_client["produit"]: historique_client["quantite_livraison"]})
    
    # Cette boucle va nous permetre d'afficher les produits
    for client in historique:
        print(f"{client} ")
        sleep(0.5)
            
        for produit, valeur in historique[client].items():
            print(f"{produit} : {valeur}")
            sleep(0.5)



    • Partager sur Facebook
    • Partager sur Twitter
      5 janvier 2022 à 20:23:13

      Si l'exception est keyerror, c'est que la clef à laquelle on essaie d'accéder n'existe pas. Mais la question est bizarre car setdefault est une méthode un peu avancée, si vous ne savez pas l'utiliser, vous devez pouvoir faire autrement, plus basique.

      -
      Edité par mps 5 janvier 2022 à 20:24:14

      • Partager sur Facebook
      • Partager sur Twitter
        6 janvier 2022 à 11:07:34

        si tu as un message d'erreur, ça serait bien aussi de l'indiquer.

        Sinon le code essaie d'ajouter une entrée dans le nouveau dictionnaire historique à l'aide des champs email et produit de historique_client (un élément de historiques). si une erreur de clé se produit (ligne 111), on essaie d'accéder à l'élément produit correspondant au champ email (en résumé, on se dit dans un 1er temps que l'erreur est du à l'absence du champ produit dans historique_client), si une autre erreur de clé se produit (ligne 114), on essaie d'acceder au champ email, sinon on insère le dictionnaire des éléments produit et quantite_livraison.

        Je ne suis pas sûr que ma tentative d'explication soit bien claire (en consultant ce que fait setdefault, ça aidera peut-être https://docs.python.org/3/library/stdtypes.html#dict.setdefault )

        • Partager sur Facebook
        • Partager sur Twitter

        Exception incomprise

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown