Propriété des set

Contexte

Un set possède les propriétés d’un ensemble mathématique <https://fr.wikipedia.org/wiki/Ensemble>. La définition de Cantor <https://fr.wikipedia.org/wiki/Georg_Cantor> fait apparaître une propriété intéressante : “Par ensemble, nous entendons toute collection M d’objets m de notre intuition ou de notre pensée, définis et distincts, ces objets étant appelés les éléments de M”.

Environnement de travail

Pour cet exercice, vous devez utiliser en priorité le fichier squelette ex09-proprietes-set.py. IMPORTANT : Enregistrez le avec Right Click + Save Link As... pour conserver l’encodage.

Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :

  1. Imports et définition des variables globales ;
  2. Définition des fonctions secondaires ;
  3. Définition de la fonction principale ;
  4. Appel protégé de la fonction principale.

Objectifs

L’objectif est d’écrire une fonction searchext_unique() :

- qui prend en argument une liste de noms de fichier ;
- et qui retourne une liste d'extensions *distinctes*, en minuscules et ordonnées alphabétiquement.

Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main et en affichant la valeur de retour (les doctests de la fonction donnent des exemples d’appel et les valeurs de retour correspondantes).

Informations complémentaires

La fonction searchext() écrite dans l’exercice ex06-liste-extensions.html pouvait retourner une liste contenant plusieurs fois la même extension. On peut utiliser la propriété précédente afin de retourner une liste des extensions ne contenant que des éléments distincts.

Une version naïve pourrait reprendre (copier/coller) le code de searchext() en modifiant la construction de la liste avec un test à chaque itération de la présence ou non de l’extension à rajouter. On aurait cependant une forte duplication de code <https://fr.wikipedia.org/wiki/Duplication_de_code>_ qui est une erreur majeure en programmation.

Une meilleure façon de faire est :

Pour faire appel à une fonction déjà écrite, on relira attentivement le chapitre Fonctions et modules <https://perso.esiee.fr/~courivad/python/04-fonctions.html/>_.

Pour faciliter les choses, le fichier :file:ex06-liste-extensions.py, qui contient searchext, sera placé dans le répertoire de travail ;

Les constructeurs de list et set prennent en argument des séquences, c’est à dire des objets itérables.

Doctests

Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal.

La totalité des doctests doivent réussir.