TP : Créer un moteur de censure de texte (2/4)

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.