Un set possède les propriétés d’un ensemble mathématique.
La définition de 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 Liste
des extensions 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 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.
Pour faciliter les choses, le fichier python-06-listes-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.