QCM☘
QCM☘
Avec le code:
notes = [ {"C1": 8, "C2": 12, "C3": 9},
{"C1": 2,"C2": 18,"C3": 15},
{"C1": 14,"C2": 13,"C3": 17},
{"C1": 10,"C2": 11,"C3": 12}
]
notes.sort(key= lambda x: max(x.values())-min(x.values()))
print(notes)
on obtient:
- [{'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 2, 'C2': 18, 'C3': 15}]
- [{'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 2, 'C2': 18, 'C3': 15}]
- [{'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 2, 'C2': 18, 'C3': 15}]
- [{'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 2, 'C2': 18, 'C3': 15}]
Réponses
- [{'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 2, 'C2': 18, 'C3': 15}]
- [{'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 2, 'C2': 18, 'C3': 15}]
- [{'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 2, 'C2': 18, 'C3': 15}]
- [{'C1': 10, 'C2': 11, 'C3': 12}, {'C1': 8, 'C2': 12, 'C3': 9}, {'C1': 14, 'C2': 13, 'C3': 17}, {'C1': 2, 'C2': 18, 'C3': 15}]
Le tri se fait suivant l'ordre croissant des amplitudes.
On pourrait avoir un doute entre les propositions 3 et 4 car les deux listes centrales présentent la même amplitude. Rappelez vous que dans ce cas, python conserve l'ordre initial des éléments: {"C1": 8, "C2": 12, "C3": 9}
est avant {"C1": 14,"C2": 13,"C3": 17}
dans la liste initiale, donc reste avant dans la liste finale, le critère de tri choisi ne permettant pas de les ordonner.
QCM☘
A partir du code:
personnes = []
personnes.append({'Nom': 'Torvalds', 'Prénom': 'Linus', 'naissance': 1969})
personnes.append({'Nom': 'Gates', 'Prénom': 'Bill', 'naissance': 1955})
personnes.append({'Nom': 'Knuth', 'Prénom': 'Donald', 'naissance': 1938})
personnes.append({'Nom': 'Van Rossum', 'Prénom': 'Guido', 'naissance': 1956})
personnes.append({'Nom': 'Eich', 'Prénom': 'Brendan', 'naissance': 1961})
personnes.append({'Nom': 'Lerdorf', 'Prénom': 'Rasmus', 'naissance': 1968})
personnes.append({'Nom': 'Berners-Lee', 'Prénom': 'Tim', 'naissance': 1955})
realisation = []
realisation.append({'Nom': 'Torvalds', 'oeuvre': 'Linux'})
realisation.append({'Nom': 'Gates', 'oeuvre': 'Microsoft'})
realisation.append({'Nom': 'Knuth', 'oeuvre': 'TeX'})
realisation.append({'Nom': 'Eich', 'oeuvre': 'JavaScript'})
realisation.append({'Nom': 'Lerdorf', 'oeuvre': 'PHP'})
realisation.append({'Nom': 'Berners-Lee', 'oeuvre': 'HTML'})
on veut fabriquer la liste "fusion" T suivante:
[{'nom': 'Torvalds', 'né en': 1969, 'père de': 'Linux'},
{'nom': 'Gates', 'né en': 1955, 'père de': 'Microsoft'},
{'nom': 'Knuth', 'né en': 1938, 'père de': 'TeX'},
{'nom': 'Eich', 'né en': 1961, 'père de': 'JavaScript'},
{'nom': 'Lerdorf', 'né en': 1968, 'père de': 'PHP'},
{'nom': 'Berners-Lee', 'né en': 1955, 'père de': 'HTML'}]
Quel code convient:
-
def fusion(individu, realise): return {'nom': individu['Nom'], 'né en': individu['naissance'], 'père de': realise['oeuvre']} T = [ fusion(p, r) for p in personnes for r in realisation if p['Nom'] == r['Nom'] ]
-
def fusion(individu, realise): return {'nom': individu['Nom'], 'né en': individu['naissance'], 'père de': realisation['oeuvre']} T = [ fusion(p, r) for p in personnes for r in realisation if p['Nom'] == r['Nom'] ]
-
def fusion(individu, realise): return {'nom': individu['Nom'], 'né en': individu['naissance'], 'père de': realise['oeuvre']} T = [ fusion(p, r) for p in personnes for r in realisation if personnes['Nom'] == realisation['Nom'] ]
-
def fusion(): liste = [] for p in personnes: for r in realisation: if p['Nom'] == r['Nom']: liste.append({ 'nom': p['Nom'], 'né en': p['naissance'], 'père de': r['oeuvre']}) return liste T = fusion()
Réponse
-
def fusion(individu, realise): return {'nom': individu['Nom'], 'né en': individu['naissance'], 'père de': realise['oeuvre']} T = [ fusion(p, r) for p in personnes for r in realisation if p['Nom'] == r['Nom'] ]
-
def fusion(individu, realise): return {'nom': individu['Nom'], 'né en': individu['naissance'], 'père de': realisation['oeuvre']} T = [ fusion(p, r) for p in personnes for r in realisation if p['Nom'] == r['Nom'] ]
-
def fusion(individu, realise): return {'nom': individu['Nom'], 'né en': individu['naissance'], 'père de': realise['oeuvre']} T = [ fusion(p, r) for p in personnes for r in realisation if personnes['Nom'] == realisation['Nom'] ]
-
def fusion(): liste = [] for p in personnes: for r in realisation: if p['Nom'] == r['Nom']: liste.append({ 'nom': p['Nom'], 'né en': p['naissance'], 'père de': r['oeuvre']}) return liste T = fusion()