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 python-09-sets-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.