TP : Créer un moteur de censure de texte (2/4)#
Partie 2 : Détecter un mot dans un texte#
Dans cette partie, vous allez écrire une fonction capable de vérifier si un mot apparaît à un endroit précis dans un texte, sans tenir compte des majuscules ou minuscules.
Exemple
Texte : Chien méchant, mot recherché : chien. Le mot apparaît à l’indice 0, même si les lettres ne sont pas dans la même forme (majuscule/minuscule).
L’obectif est d’écrire une fonction mot_correspond(texte, i, mot) qui compare un mot mot avec une partie d’un texte qui commence à l’indice i, renvoie True si le mot correspond, False sinon.
Commencez par copier coller votre fonction en_minuscule(car) dans la cellule suivante.
### BEGIN SOLUTION
def en_minuscule(car):
if 'A' <= car <= 'Z':
return chr(ord(car) + 32)
return car
### END SOLUTION
Complétez mot_correspond. Vous devez utiliser votre fonction en_minuscule écrite en Partie 1.
def mot_correspond(texte, i, mot):
"""
Vérifie si le mot 'mot' commence bien à l’indice i dans 'texte',
en ignorant les différences entre majuscules et minuscules.
Paramètre texte : une chaîne de caractères
Paramètre i : un indice (entier)
Paramètre mot : le mot à comparer
Renvoie True si le mot correspond, False sinon.
"""
### BEGIN SOLUTION
# Si le mot dépasse la fin du texte, il ne peut pas correspondre
if i + len(mot) > len(texte):
return False
for j in range(len(mot)):
if en_minuscule(texte[i + j]) != en_minuscule(mot[j]):
return False
return True
### END SOLUTION
# Tests
assert mot_correspond("Bonjour", 0, "bon")
assert mot_correspond("abcBonjour", 3, "bonjour")
assert not mot_correspond("salut", 0, "bonjour")
assert mot_correspond("salut", 2, "lu")
assert mot_correspond("BOnBoN", 0, "bon")
assert mot_correspond("BOnBoN", 3, "bon")
Bilan de la partie 2#
Vous savez maintenant :
vérifier si un mot est présent à une position donnée dans un texte ;
comparer des textes en ignorant les majuscules et minuscules ;
retourner un résultat clair selon la correspondance détectée.
Dans la Partie 3, vous utiliserez cette fonction pour censurer un mot dans un texte.