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