Bonjour ! J’ai vraiment du mal pour cette exercice.
Serait-il possible de m’aider ?

On souhaite étudier les notes des élèves d'une classe en précisant le nom de la matière concernée par la note. On propose la modélisation suivante :
notes = {
'Enzo' : ('maths', 3),
'Emma' : ('maths', 16),
'Lucas' : ('NSI', 3),
'Manon' : ('NSI', 13)}

1) Quel est le type de notes ?
2) Que vaut l'expression notes[2] ?
3) Écrire ce dictionnaire dans un programme python et écrire l'instruction permettant de rajouter que Farid a eu 15 en NSI.
4) On veut connaitre le nom de tous les élèves ayant eu une note inférieure à 15. Écrire un programme qui affiche la réponse voulue.
5) On veut écrire une fonction EleveMoinsBon() qui prend un dictionnaire en paramètre et qui renvoie les noms des élèves ayant eu la moins bonne note. Tester votre fonction sur le dictionnaire « notes »
6) On veut écrire une fonction TriParMatiere() qui prend en paramètre un dictionnaire et qui renvoie un dictionnaire dont les clés sont les noms des matières et les valeurs la liste des notes obtenues par les élèves dans chaque matière.
Ex : si on suppose que notes = {'Enzo' : ('maths', 3), 'Emma' : ('maths', 16), 'Lucas' : ('NSI, 3), 'Manon' : (NSI, 13), 'Farid' : ('NSI', 15)}
TriParMatiere(notes) affichera {'maths' : [3, 16], 'NSI' : [3, 13, 15]}

Merci d’avance !


Sagot :

Bonjour,

notes = {

   'Enzo' : ('maths', 3),

   'Emma' : ('maths', 16),

   'Lucas' : ('NSI', 3),

   'Manon' : ('NSI', 13)}

#Question 1

print(type(notes)) => <class dict>, c'est donc un dictionnaire.

#Question 2

print(notes[2]) => Erreur, on doit utiliser le nom des clés pour parcourir un dictionnaire. Un dictionnaire n'a pas un ordre précis donc la position '2' n'a aucun sens.

#Question 3

notes['Farid'] = ('NSI', 15)

#Question 4

for nom, valeur in notes.items(): #On aura fait tous les parcours possibles sur tes 3 devoirs, .keys() pour récupérer les clés, .values() pour récupérer les valeurs et .items() pour récupérer les deux en même temps.

   if valeur[1] <= 15:

       print(nom)

#Question 5

def EleveMoinsBon(dictionnaire):

   mini = 20

   noms = []

   for nom, valeur in dictionnaire.items():

       if valeur[1] == mini:

           noms.append(nom)

       elif valeur[1] < mini:

           noms = [nom]

           mini = valeur[1]

   return noms

print(EleveMoinsBon(notes)) => ["Enzo", "Lucas"]

#Question 6

def TriParMatiere(dictionnaire):

   dico = {}

   for valeur in dictionnaire.values():

       try:

           dico[valeur[0]].append(valeur[1])

       except:

           dico[valeur[0]] = [valeur[1]]

   return dico

print(TriParMatiere(notes)) => {'maths': [3, 16], 'NSI': [3, 13, 15]}

Bonne journée.