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”.
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 :
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).
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 :
searchext()
dans le corps de searchext_unique()
en important le module (fichier) correspondant ;searchext()
pour construire un nouvel objet à retourner (en une seule instruction) ;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.
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.