Trouvez des réponses rapides et précises à toutes vos questions sur Laurentvidal.fr, la meilleure plateforme de Q&R. Découvrez des réponses fiables à vos questions grâce à une communauté d'experts prêts à partager leurs connaissances et expériences variées. Découvrez la facilité d'obtenir des réponses rapides et précises à vos questions grâce à l'aide de professionnels sur notre plateforme.

J'ai un DM en NSI pour demain le voici:




Exercice 2¶



Q0. Copier dans un fichier td9_exo2.py le code incomplet suivant :

# Def des fonctions
def cardinal(t):
pass

def attributs(t):
pass

def coherence_attributs(t):
pass

def existe_doublon(t, champ):
pass

# Programme principal
t1 = [{'Nom': 'Joe', 'Anglais': '17', 'Info': '18', 'Maths': '16'},
{'Nom': 'Zoé', 'Anglais': '15', 'Info': '13', 'Maths': '14'},
{'Nom': 'Max', 'Anglais': '19', 'Info': '13', 'Maths': '11'},
{'Nom': 'Bob', 'Anglais': '7', 'Info': '14', 'Maths': '18'},
{'Nom': 'Max', 'Anglais': '12', 'Info': '19', 'Maths': '15'}]

t2 = [{'Nom': 'Joe', 'Anglais': '17', 'Info': '18', 'Maths': '16'},
{'Nom': 'Zoé', 'Anglais': '15', 'Info': '13', 'Maths': '14'},
{'Nom': 'Max', 'Anglais': '19', 'Info': '13', 'Svt': '11'}]

t3 = [{'Nom': 'Joe', 'Anglais': '17', 'Info': '18', 'Maths': '16'},
{'Nom': 'Zoé', 'Anglais': '15', 'Info': '13', 'Maths': '14'},
{'Nom': 'Max', 'Anglais': '19', 'Info': '13'}]

t4 = [{'Nom': 'Joe', 'Anglais': '17', 'Info': '18', 'Maths': '16'},
{'Nom': 'Zoé', 'Anglais': '15', 'Info': '13', 'Maths': '14'},
{'Nom': 'Max', 'Anglais': '19', 'Info': '13', 'Maths': '11', 'Svt': '11'}]

# tests de la fonction cardinal
assert(cardinal(t1) == 5), 'échec du test de la fonction cardinal sur t1'
assert(...), 'échec du test de la fonction cardinal sur t2'

# test de la fonction attributs
assert(...), 'échec du test de la fonction attributs sur t1'

# tests de la fonction coherence_attributs
assert(...), 'échec du test de la fonction coherence_attributs sur t1'
assert(...), 'échec du test de la fonction coherence_attributs sur t2'
assert(...), 'échec du test de la fonction coherence_attributs sur t3'
assert(...), 'échec du test de la fonction coherence_attributs sur t4'

# tests de la fonction existe_doublon
assert(...), 'échec du test de la fonction existe_doublon sur t1 et Nom'
assert(...), 'échec du test de la fonction existe_doublon sur t1 et Anglais'
assert(...), 'échec du test de la fonction existe_doublon sur t1 et Info'


Q1. Compléter le corps de la fonction cardinal qui prend en paramètre une table t et renvoie son nombre d'enregistrements.
La tester en complétant les lignes d'assertions correspondantes.

Q2. Compléter le corps de la fonction attributs qui prend en paramètre une table t et renvoie la liste de ses attributs triée par ordre alphabétique croissant.
La tester en complétant les lignes d'assertions correspondantes.

Q3. Compléter le corps de la fonction coherence_attributs qui prend en paramètre une table t et renvoie True si tous les enregistrements de la table possèdent exactement les mêmes attributs et False sinon.
La tester en complétant les lignes d'assertions correspondantes.

Q4. Compléter le corps de la fonction existe_doublon qui prend en paramètre une table t et un champ champ et renvoie True si ce champ contient plusieurs fois la même valeur et False sinon.
La tester en complétant les lignes d'assertions correspondantes.

Exercice 3



Quel est le rôle de la fonction définie ci-dessous ?

def mystere(t, fs):
'''
param t: list de dict. Une table.
param fs: list de str.
return : list de dict.
'''
res = []
for e in t:
new_e = {}
for c in e:
if c in fs:
new_e[c] = e[c]
res.append(new_e)
return res

Sagot :

Kaohm

désolé pour l'envoi tardif

# Def des fonctions

def cardinal(t):

   return len(t)

def attributs(t):

   liste_nom = []

   for personne in t:

       for nom in personne:

           if nom == 'Nom':

               liste_nom.append(personne[nom])

   return sorted(liste_nom)

           

def coherence_attributs(t):

   dico = {}

   for enregistrement in t:

       for attributs in enregistrement:

           if attributs in dico:

               dico[attributs] += 1

           else:

               dico[attributs] = 1

   for valeur in dico:

       if dico[valeur] == cardinal(t):

           continue

       else:

           return False

   return True

def existe_doublon(t, champ):

   dico = {}

   for enregistrement in t:

       for attributs in enregistrement:

           if attributs == champ and not(enregistrement[champ] in dico):

               dico[enregistrement[champ]] = 1

           elif attributs == champ and enregistrement[champ] == enregistrement[attributs]:

               dico[enregistrement[champ]] += 1

   

   for valeur in dico:

       if dico[valeur] < 2:

           continue

       else:

           return True

   return False

Tout fonctionne

Nous apprécions votre temps. Revenez nous voir pour des réponses fiables à toutes vos questions. Merci d'avoir choisi notre plateforme. Nous nous engageons à fournir les meilleures réponses à toutes vos questions. Revenez nous voir. Vos questions sont importantes pour nous. Revenez régulièrement sur Laurentvidal.fr pour obtenir plus de réponses.