Exo dictionnaire python nsi première

Bonjour je suis un eleve de nsi et j'ai cet exercice à rendre mais je ne le comprends absolument pas. Merci d'avance a ceux qui m'aideront

Exercice 2 : dépouillement d'une urne
A l'issue d'une élection à scrutin uninominal (un seul nom par bulletin), on récupère un tableau contenant tous les noms inscrits sur les bulletins trouvés dans
l'urne.
Afin de déterminer le vainqueur de l'élection, en un seul parcours des bulletins, on souhaite créer un dictionnaire qui à chaque nom contenu dans l'urne associe
le nombre de bulletins correspondant et se servir de ce dictionnaire pour déterminer le vainqueur. Pour ce faire, on va :
créer une fonction incr_dico() qui rajoute à un dictionnaire passé en argument une clé (elle aussi passée en argument)associée à la valeur 1 si cette clé
n'est pas déjà présente dans le dictionnaire , sinon, incrémente de 1 la valeur associée à cette clé.
créer une fonction depouillement() qui prend la liste des bulletins en argument, construit le dictionnaire et retourne le vainqueur.

In [ ]: bulletins=["Martin","Paul","Pierre","Jacques","Toto","Marie","Paul","Pierre","Jacques","Toto","Toto"]
def incr_dico(dico,cle):
 """ Entrée : un dictionnaire dico
 une clef cle
 Sortie : rien (c'est une procédure qui modifie le dico existant)
 Effet :
 - si cle est une clef de dico, la valeur de cle est augmentée de 1
 - sinon cle est insérée dans dico associée à la valeur 1
 """
 #
 # à compléter
 #

def depouillement(bulletins):
 """ Entrée : une liste bulletins
 Sortie : une chaîne de caractères : vainqueur
 Effets :
 - construit le dictionnaire des noms-nb de bulletins
 - détermine le vainqueur
 """
 dico = {}
 ## création du dictionnaire
 #
 # à compléter
 #

 nb_voix_max = 0
 vainqueur=""
 ## détermination du vainqueur
 #
 # à compléter
 #

 return vainqueur
print("le vainqueur est : ",depouillement(bulletins))

6 réponses

  1. Bonjour, en effet la consigne indique bien quil faut cree une fonction incr_dico() mais je ne sais pas du tout comment faire
    0
  2. Voila ou j'en suis, pour les fonction incr_dico, j'ai tester la fonction mais elle ne marche pas pouvez m'aider svp

    def incr_dico(dico,cle):
     """ Entrée : un dictionnaire dico
     une clef cle
     Sortie : rien (c'est une procédure qui modifie le dico existant)
     Effet :
     - if cle est une clef de dico, la valeur de cle est augmentée de 1
     - sinon cle est insérée dans dico associée à la valeur 1 """
     
     un_dictionnaire_dico={"cle":"valeur"}
     if cle=un_dictionnaire_dico
         valeur "cle" = +1
     else "cle" = dico valeur 1
    0
    1. Je ne comprend pas egalement "entre,sortie,effet" qui sont dans les commentaire du code.
      0
      1. Modérateur
        Il faut définir le dictionnaire en dehors de la fonction comme pour les bulletins.

        Ensuite, dans la fonction tu lui passe, en paramètres, le dictionnaire ainsi que la "clé" que tu veux ( ça c'est l'entrée.. ) soit lui ajouter .. soit, si elle existe déjà dans le dictionnaire, l'incrémenter de 1.(ça c'est l'effet )

        Pour vérifier si une "clé" existe dans le dictionnaire, tu dois utiliser la méthode has_key
        https://www.geeksforgeeks.org/python-dictionary-has_key/

        Pour ajouter un élément à ton dictionnaire, tu peux faire comme ceci
        https://www.w3schools.com/python/gloss_python_dictionary_add_item.asp

        Pour changer la valeur dans d'un élément dans un dictionnaire
        https://www.w3schools.com/python/gloss_python_change_dictionary_item.asp

        A noter que je ne code pas en python.... mais le langage est tellement simple que de brèves recherches sur internet permettent de trouver les réponses sans souci...

        Pour la fonction dépouillement, il suffira de boucler sur la liste
        https://www.w3schools.com/python/python_lists_loop.asp
        et dans la boucle en question, faire appel à la fonction incr_dico ( le paramètre "clé" étant la valeur de l'élément sur laquelle se trouve la boucle

        0
        1. Bonjour,

          un test if valide en Python:

          if cle == toto:
              x=1
          else:
              x=0
          

          (remarquer les deux points ":" en fin d'instruction)

          valeur "cle" = +1 ca n'est pas du Python
          "cle" = dico valeur 1 non plus

          cle est une chaine de caractères, pas une variable, on ne peut pas faire "cle" =10
          et dico valeur 1, c'est quoi ?

          C'est basique, tout ça ...
          0