🌍 Exercice : Comparaison de chaînes Unicode
🎯 Objectif pédagogique
L’objectif est de montrer que deux chaînes peuvent paraître identiques mais être différentes en mémoire selon leur forme de composition.
📜 Énoncé
Démarrer avec le code suivant :
import unicodedata
# Deux versions du même mot : "café"
s1 = "café" # caractère é accent aigu (U+00E9)
s2 = "cafe\u0301" # 'e' suivi d'un accent aigu combinant (U+0301)
# Liste de mots à normaliser
mots = ["café", "cafe\u0301", "naïve", "nai\u0308ve", "résumé"]
Ensuite, vous devez créer un programme qui effectue les opérations suivantes :
- Créer une liste
mots_normaux
contenant tous les mots de la listemots
, normalisés en forme NFC. - Créer une liste
comparaison
contenant des booléens indiquant si le mot d’origine est identique (==) à sa version NFC normalisée. - Créer une liste
paires_égales
contenant toutes les paires de mots dansmots
qui semblent identiques visuellement, mais qui ne sont pas égales (!=
), alors que leurs versions normalisées le sont. - Créer une liste des longueurs des chaînes Unicode avant et après normalisation (sous forme de tuples).
🛑 Contraintes
- Aucun
for
niwhile
- Utiliser uniquement des compréhensions de liste et des fonctions de
unicodedata
(normalize
)