Aller au contenu

TP - Parcours et traitement

Dans le dossier [NSI], créez le dossier [F02-Chaines].

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

Important

Dans chaque fonction à programmer, remplacez le mot-clef pass par les instructions nécessaires.

De plus, ne vous précipitez pas sur les pistes !
Prenez le temps de réflechir et chercher par vous-même en suivant les conseils ci-après

Conseils

  • Pour exécuter ce programme, il suffit de le sauvegarder puis d'appuyer sur la touche [F5].
  • Avez-vous bien fait un schéma au brouillon pour visualiser le problème posé ?
  • Avez-vous essayé de rédiger un algorithme en français, avec vos propres mots, avant de vous lancer dans la programmation sur machine ?
  • Avez-vous utilisé des affichages intermédiaires, des print(), pour visualiser au fur et à mesure le contenu des variables ?
  • Avez-vous testé le programme avec les propositions de tests fournies ?
  • Avez-vous testé le programme avec de nouveaux tests, différents de ceux proposés ?

Nombre de « e »

Complétez le corps de la fonction nombre_e() pour qu'elle renvoie le nombre d'occurrences de la lettre « e » dans la chaîne saisie en paramètre.

1
2
3
4
5
def nombre_e(chaine):
    """
    chaine – str (chaîne de caractères)
    Sortie: int – le nombre de lettres « e » dans la chaîne
    """

Exemple de test

>>> nombre_e("Ceci est un exemple.")
5

>>> nombre_e("Essai")
0
Une piste

La fonction nombre_e() se conçoit en trois temps :

  1. On parcourt chaque caractère de la chaîne.
  2. Lorsque le caractère est un 'e', on compte 1 de plus.
  3. A la fin du parcours, on renvoie le décompte obtenu.

Premier « e »

Complétez le corps de la fonction rang_premier_e() en respectant ses spécifications.

1
2
3
4
5
6
7
def rang_premier_e(chaine):
    """
    chaine – str (chaîne de caractères)
    Sortie: int – le numéro de place du premier « e » dans
            la chaîne (la première place est numérotée 0).
            Renvoie -1 s'il n'y a pas de « e » dans la chaîne.
    """

Exemple de test

>>> rang_premier_e("Ceci est un exemple.")
1

>>> rang_premier_e("Essai")
-1
Une piste

On parcourt tous les indices tant que :

  • cet indice est inférieur à la longueur de la chaîne ;
  • le caractère correspondant à cet indice n'est pas 'e'.

On vérifie ensuite la valeur de l'indice (a-t-on dépassé l'indice du dernier caractère ou pas ?).

Espacer

  1. Complétez le corps de la fonction espacer() en respectant ses spécifications.

    1
    2
    3
    4
    5
    def espacer(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: str – la chaine dans laquelle un espace a été inséré entre chaque caractère.
        """
    

    Exemple de test

    >>> espacer("Ceci est un exemple.")
    'C e c i   e s t   u n   e x e m p l e . '
    
    Une piste

    Puisqu'on ne peut pas modifier une chaîne de caractères, il faut « tricher ». Pour cela :

    • On initialise une chaîne vide. Par exemple : resultat = ''.
    • On parcourt les caractères de la chaîne à modifier et on place les caractères à conserver dans la chaîne resultat.
    • On renvoie la chaîne resultat qui correspond à la chaîne initiale modifiée.
  2. Une amélioration
    Le programme précédent crée trois espaces là où il y en avait un seul et place un espace à la fin de la chaîne. Complétez le corps de la fonction espacer_mieux() en respectant ses spécifications.

    1
    2
    3
    4
    5
    6
    def espacer_mieux(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: str – la chaine dans laquelle un espace a été inséré entre chaque
                caractère, sauf pour les espaces et le dernier caractère.
        """
    

    Exemple de test

    >>> espacer_mieux("Ceci est un exemple.")
    'C e c i  e s t  u n  e x e m p l e .'
    
    Une piste

    Prendre en compte le dernier caractère en dehors de la boucle plutôt que dans la boucle...

Inverser

  1. Complétez le corps de la fonction inverser() en respectant ses spécifications.

    1
    2
    3
    4
    5
    6
    def inverser(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: str – écriture "inversée" de cette chaîne :
                le premier caractère devint le dernier, le deuxième devient l'avant dernier, etc...
        """
    

    Exemple de test

    >>> inverser("Ceci est un exemple.")
    '.elpmexe nu tse iceC'
    
    Une piste

    Comment placer un caractère au début de la chaîne « construite » plutôt qu'à la fin ?

  2. En faisant appel à cette fonction, complétez la définition de la fonction est_palindrome() qui renvoie True si la chaîne en paramètre est un palindrome (un texte qui peut se lire dans les deux sens, comme « radar » ou « s.o.s ») et qui renvoie False sinon.
    Attention, il vous est aussi demandé de compléter le docstring (les spécifications) de cette fonction.

    1
    2
    3
    4
    5
    def est_palyndrome(chaine):
        """
        chaine – 
        Sortie: 
        """
    

    Exemple de test

    >>> est_palyndrome("Ceci est un exemple.")
    False
    
    >>> est_palyndrome("radar")
    True
    
    Une piste

    On arrête avec les pistes : reprenez les conseils des parties précédentes, un papier et un crayon, vous devriez y arriver !

Tables de multiplication

Rappel

De manière générale, soit une fonction renvoie une valeur, soit une fonction effectue un affichage. Elle ne doit jamais faire les deux.

Complétez le corps de la fonction table() en respectant ses spécifications. Vous pouvez constatez que cette fonction ne renvoie aucune valeur (None), son rôle se borne à afficher la table de multiplication de n, de n*1 à n*fin (inclus).

1
2
3
4
5
def table(n, fin):
    """
    n, fin – int, entiers naturels strictement positifs
    Sortie: None - affiche la table de n, de n*1 à n*fin inclus
    """

Exemple de test

>>> table(2, 4)
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8