Exo dictionnaire python nsi première

Fermé
Aurelgkk Messages postés 4 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 14 mars 2021 - 14 mars 2021 à 21:22
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 15 mars 2021 à 12:56
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))
A voir également:

6 réponses

jordane45 Messages postés 38424 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 février 2025 4 734
14 mars 2021 à 21:29
Bonjour,

Tout est indiqué dans l'énoncé de l'exercice et les commentaires du code....
Quoi qu'il en soit,
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

.
0
Aurelgkk Messages postés 4 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 14 mars 2021
14 mars 2021 à 21:33
Bonjour, en effet la consigne indique bien quil faut cree une fonction incr_dico() mais je ne sais pas du tout comment faire
0
jordane45 Messages postés 38424 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 février 2025 4 734
14 mars 2021 à 21:35
Pour faire un dictionnaire
https://courspython.com/dictionnaire.html
0
Aurelgkk Messages postés 4 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 14 mars 2021
Modifié le 14 mars 2021 à 21:57
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
Aurelgkk Messages postés 4 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 14 mars 2021
14 mars 2021 à 22:04
Je ne comprend pas egalement "entre,sortie,effet" qui sont dans les commentaire du code.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38424 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 février 2025 4 734
14 mars 2021 à 22:41
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 15 mars 2021 à 12:58
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