====== Comptage des éléments d'une liste ====== //Exercice 4 du TP 1// On considère une séquence -- ''list'', ''tuple'', ''str'' -- L de longueur ''n = len(L)'' non nulle. On voudrait préciser ses éléments et le nombre de représentants par élément. Par exemple pour ''L = [1, 0, 4, 2, 1, 0, 4, 1, 0]'', on a trois fois le ''0'', trois fois le ''1'', une fois le ''2'' et deux fois le ''4''. Le mieux est d’utiliser un dictionnaire. Ici nous aurions le dictionnaire ''{0:3, 1:3, 2:1, 4:2}'' Dans un dictionnaire, l'ordre des clés n'est pas garanti. On pourrait donc avoir à la place ''{2:1, 1:3, 0:3, 4:2}''. ===== Question 1 ===== Implémenter une fonction ''compte'' qui prend en argument une séquence et, avec un parcours séquentiel, renvoie le dictionnaire décrit ci-dessus. On testera la fonction bien sûr ! On pourra partir du cadre qui suit : FONCTION compte ENTRÉE: séquence (liste, chaîne...) SORTIE: dictionnaire dont les clés sont les valeurs de la séquence et les valeurs sont les effectifs DÉBUT initialiser un dictionnaire vide POUR CHAQUE item de la séquence FAIRE SI l'item est présent dans le dictionnaire ALORS ajouter 1 à l'effectif de cet item SINON ajouter cet item comme clé du dictionnaire avec la valeur 1 FIN FIN renvoyer le dictionnaire FIN ===== Question 2 ===== Lorsque la séquence L est une séquence d’entiers **naturels**, au lieu d'un dictionnaire, on peut renvoyer un tableau T : Par exemple si l'entrée L contient 4 fois la valeur 12, alors on aura T[12] = 4. * Soit p = max(L). Justifier que T doit avoir la longueur p + 1. * Implémenter une fonction ''compte2'' selon le schéma suivant. * Testez... FONCTION compte2 ENTRÉE: séquence L (liste ou tupple) d'entiers naturels SORTIE: tableau T contenant les effectifs des valeurs soit p la valeur maximale de L (donc p entier naturel) initialiser T comme tableau de longueur p + 1 et ne contenant que des 0 POUR CHAQUE item de L FAIRE augmenter de 1 la valeur de T[item] FIN renvoyer T FIN