Aller au contenu

TP - Préfixes et suffixes

Téléchargez le fichier « à trous » TPB01.41.py (clic droit -> [Enregistrer sous]) et enregistrez-le dans le dossier [B01_Tableaux].

Consignes communes à chaque partie

Le programme principal contient un appel au module doctest :

##----- Programme principal et tests -----##
if __name__ == '__main__':
    import doctest
    doctest.testmod()
Chacune des fonctions devra passer les tests proposés.
Il faudra aussi ajouter vos propres tests dans le programme principal (le main) afin de vous entraîner à en réaliser.

Partie 1 : Préfixe

Pour un mot donné m, on appelle préfixe de ce mot m tout mot constitué des premières lettres du mot m.

Exemples

  • Les préfixes du mot "carambar" sont c, ca, car, cara, caram, caramb, caramba, carambar.
  • Les préfixes du mot "NSI" sont N, NS, NSI.
  1. Complétez le code de la fonction prefixe() qui prend en paramètres une chaîne de caractère mot et un entier n et qui renvoie le préfixe de longueur n de mot.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def prefixe(mot, n):
        """
        mot – str
        n - int, entier tel que 0 < n <= nombre de lettres de mot
        Sortie: str - prefixe de longueur n de mot
        >>> prefixe('carambar', 3)
        'car'
        """
        pass
    
    Il faudra que votre programme lève l'erreur suivante :

    >>> prefixe('carambar', 9)
    AssertionError: Le paramètre n ne convient pas
    
  2. Complétez le code de la fonction prefixes() qui prend en paramètre une chaîne de caractère mot et qui renvoie un tableau contenant tous les préfixes de mot.

    1
    2
    3
    4
    5
    6
    7
    8
    def prefixes(mot):
        """
        mot – str
        Sortie: list - tous les préfixes de mot
        >>> prefixes('carambar')
        ['c', 'ca', 'car', 'cara', 'caram', 'caramb', 'caramba', 'carambar']
        """
        pass
    

Partie 2 : Suffixe

Pour un mot donné m, on appelle suffixe de ce mot m tout mot constitué des dernières lettres du mot m.

Exemples

  • Les préfixes du mot "carambar" sont r, ar, bar, mbar, ambar, rambar, arambar, carambar.
  • Les préfixes du mot "NSI" sont I, SI, NSI.
  1. Complétez le code de la fonction suffixe() qui prend en paramètres une chaîne de caractère mot et un entier n et qui renvoie le suffixe de longueur n de mot.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def suffixe(mot, n):
        """
        mot – str
        n - int, entier tel que 0 < n <= nombre de lettres de mot
        Sortie: str - suffixe de longueur n de mot
        >>> suffixe('carambar', 3)
        'bar'
        """
        pass
    

Il faudra que votre programme lève l'erreur suivante :

```python
>>> suffixe('carambar', -2)
AssertionError: Le paramètre n ne convient pas
```
  1. Complétez le code de la fonction suffixes() qui prend en paramètre une chaîne de caractère mot et qui renvoie le tableau contenant tous les suffixes de mot.

    1
    2
    3
    4
    5
    6
    7
    8
    def suffixes(mot):
        """
        mot – str
        Sortie: list - tous les suffixes de mot
        >>> suffixes('carambar')
        ['r', 'ar', 'bar', 'mbar', 'ambar', 'rambar', 'arambar', 'carambar']
        """
        pass
    

Partie 3 : Bords

Pour un mot donné m, on appelle bord de ce mot m tout mot qui est à la fois préfixe et suffixe du mot m sans être le mot m lui-même.

On considère que la chaîne vide est un bord de toute chaîne.

Exemples

  • L'unique bord de "abacaba" est "aba".
  • Les bords de "abcabcab" sont "ab" et "abcab".
  • "je suis" est un bord de la chaîne "je suis comme je suis".

Complétez le code de la fonction plus_long_bord() qui prend en paramètre une chaîne de caractère mot et et qui renvoie le plus long bord de mot.

1
2
3
4
5
6
7
8
def plus_long_bord(mot):
    """
    mot – str
    Sortie: str - le plus long bord de mot
    >>> plus_long_bord('abcabcab')
    'abcab'
    """
    pass