Aller au contenu

Collage de mots⚓︎

Un logiciel de reconnaissance vocale donne la liste des mots d'un candidat hésitant, il y a de nombreux « heu » que l'on souhaite supprimer de son discours.

Écrire une fonction supprimeuh

  • qui prend en paramètre mots : une liste de mots qui sont des chaines de caractères (non vides) uniquement composées de lettres minuscules,
  • et qui renvoie le discours sous forme d'une seule chaine de caractères qui ne contient plus les mots "heu" de la liste. Les mots seront séparés par une seule espace. Il n'y aura pas d'espace ni au début, ni à la fin du discours.

On n'utilisera pas join, ni print dans cet exercice.

Exemples
🐍 Console Python
>>> supprimheu(["je", "heu", "vais", "coder", "heu", "la", "fonction", "supprimheu"])
'je vais coder la fonction supprimheu'
🐍 Console Python
>>> supprimheu(["c", "est", "facile"])
'c est facile'
###
# testsbksl-nlbksl-nlassert (bksl-nl supprimheu(["je", "heu", "vais", "coder", "heu", "la", "fonction", "supprimheu"])bksl-nl == "je vais coder la fonction supprimheu"bksl-nl)bksl-nlbksl-nlassert supprimheu(["c", "est", "facile"]) == "c est facile"bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlassert supprimheu([]) == ""bksl-nlassert supprimheu(["heu"]) == ""bksl-nlassert supprimheu(["heu", "bonjour"]) == "bonjour"bksl-nlassert supprimheu(["bien", "le", "bonjour"]) == "bien le bonjour"bksl-nlassert supprimheu(["bien", "le", "bonjour", "heu"]) == "bien le bonjour"bksl-nlbksl-nl 5/5

def supprimheu(mots):bksl-nl ...bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert (bksl-nl supprimheu(["je", "heu", "vais", "coder", "heu", "la", "fonction", "supprimheu"])bksl-nl == "je vais coder la fonction supprimheu"bksl-nl)bksl-nlbksl-nlassert supprimheu(["c", "est", "facile"]) == "c est facile"bksl-nlbksl-nldef supprimheu(mots):bksl-nl discours = ""bksl-nl for mot in mots:bksl-nl if mot != "heu":bksl-nl if discours != "":bksl-nl # on a déjà mis un motbksl-nl discours += " "bksl-nl discours += motbksl-nl return discoursbksl-nlbksl-nl

A

On ajoute une espace avant d'ajouter un mot au discours, sauf si c'est le premier ; chose que l'on détecte quand le discours est vide.

Version fonctionnelle⚓︎

L'énoncé interdit d'utiliser join

Voici ce que ça aurait pu donner : 1 ligne !

🐍 Script Python
def supprimheu(mots):
    return " ".join(mot for mot in mots if mot != "heu")

Version avec filtre avant collage⚓︎

Cette version n'est pas recommandée !

🐍 Script Python
def supprimeuh(mots):
    liste_mots = []
    for mot in mots:
        if mot != "heu":
            liste_mots.append(mot)
    if liste_mots == []:
        return ''
    chaine = liste_mots[0]
    for mot in liste_mots[1:]:
        chaine = chaine + ' ' + mot
    return chaine

Autre version itérative⚓︎

Dans la plupart des juges en ligne, la présence d'espaces supplémentaires en fin de ligne est acceptée. Dans ce cas, une solution serait :

🐍 Script Python
def supprimheu(mots):
    discours = ""
    for mot in mots:
        if mot != "heu":
            discours += mot + " "
    return discours

Dernière remarque : si on souhaite après coup enlever les espaces en trop à la fin, on peut utiliser rstrip ainsi : return discours.rstrip()

Z