Aller au contenu

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()