Voici quelques propositions pour le début de l'exercice 9. Défi de la semaine 39 : répondre aux autres questions de la recherche 1-9...
Python
####################################################### # # # E X E R C I C E 9 # # # # LES AVENTURES DU GROUPE 2-1 # # # # Épisode 2 : # # # # "LES MULTIENSEMBLES" # # # ####################################################### ####################################################### #### Calul de la multiplicité # ####################################################### ## Petits alias pour clarifier (optionnel) nb_d_elements = len # le nb d'éléments d'une collection ens_des_elements = set # l'ensemble des éléments d'une collection ## Méthode 1 : parcours "naturel" à l'aide d'une boucle def multi1( elmt_cherche, multiensemble ) : """ - Compte l'ordre de multiplicité de elmt dans un multiensemble - On crée un compteur, nul au départ - On parcourt le multiensemble et on incrémente le compteur si l'élément lu est égal à l'élément à compter - On retourne le compteur une fois sorti de la boucle >>> M = [ 1, 1, 1, 1, 2, 2, 5 ] * 1000 >>> multi( 1, M ) 4000 """ cpt = 0 for elmt_lu in multiensemble : if elmt_lu == elmt_cherche : cpt += 1 return cpt ## Méthode 2 : uniligne avec liste par compréhension def multi2( elmt_cherche, multiensemble ) : return nb_d_elements( [ elmt_lu for elmt_lu in multiensemble if elmt_lu == elmt_cherche ] ) ## Méthode 3 : on utilise le fait que True == 1 et False == 0 def multi3( elmt_cherche, multiensemble ) : cpt = 0 for elmt_lu in multiensemble : cpt += ( elmt_lu == elmt_cherche ) # plus lent car on rajoute systématiquement des 0 ce qui est inutile return cpt