Aller au contenu

Exercices d'entraînement

Ces exercices doivent être utilisés pour vous entraîner à programmer. Ils sont généralement accompagnés de pistes et de leur solution pour vous permettre de progresser.

Avant de vous précipiter sur ces solutions dès la première difficulté, n'oubliez pas les conseils suivants :

  • 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 données dans l'exercice ?
  • Avez-vous testé le programme avec de nouveaux tests, différents de ceux proposés ?

Rappels

  • Chaque programme Python doit être sauvegardé sous forme de fichier texte avec l'extension .py.
    Enregistrez ce fichier dans le dossier [F02-Chaines] avec le nom donné à l'exercice : ProgF02.61.py, ProgF02.62.py, etc...
  • Pour exécuter ce programme, il suffit de le sauvegarder puis d'appuyer sur la touche [F5].

ProgF02.61 - Nombre d'occurrences

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

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

    Exemple de test

    >>> occurrences_e("Ceci est un exemple.")
    5
    
    >>> occurrences_e("Voila")
    0
    
    Une solution
    def occurrences_e(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: int – nombre de caractères « e » dans chaine
        """
        nb_occurences = 0
        for carac in chaine:
            if carac == 'e':
                nb_occurences += 1
        return nb_occurences
    
  2. Généralisez la fonction précédente en complétant le corps de la fonction occurrences() qui prend en paramètres un caractère et une chaîne de caractères. Cette fonction renvoie le nombre d'occurrences de ce caractère dans la chaîne.

    1
    2
    3
    4
    5
    6
    def occurrences(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – nombre de caractères lettre dans chaine
        """
    

    Exemple de test

    >>> occurrences('e', "Ceci est un exemple.")
    5
    
    >>> occurrences('t', "Ceci est un exemple.")
    1
    
    Une solution
    def occurrences(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – nombre de caractères lettre dans chaine
        """
        nb_occurences = 0
        for carac in chaine:
            if carac == lettre:
                nb_occurences += 1
        return nb_occurences
    

ProgF02.62 - Caractères impairs

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

1
2
3
4
5
def imparite(chaine):
    """
    chaine – str (chaîne de caractères)
    Sortie: str – la chaine n'ayant conservé que les caractères d'indice impair.
    """

Exemple de test

>>> imparite("Ceci est un exemple.")
'eietu xml.'
Une solution
def imparite(chaine):
    """
    chaine – str (chaîne de caractères)
    Sortie: str – la chaine n'ayant conservé que les caractères d'indice impair.
    """
    resultat = ''
    for i in range(1, len(chaine), 2):
        resultat += chaine[i]
    return resultat

ProgF02.63 - Premier et dernier

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

    1
    2
    3
    4
    5
    6
    def couper(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: str – la chaine dans laquelle le premier et le dernier caractère
                ont été enlevés.
        """
    

    Exemple de test

    >>> couper("Ceci est un exemple.")
    'eci est un exemple'
    
    Une solution
    def couper(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: str – la chaine dans laquelle le premier et le dernier caractère
                ont été enlevés.
        """
        resultat = ''
        for i in range(1, len(chaine)-1):
            resultat = resultat + chaine[i]
        return resultat
    
  2. Complétez le corps de la fonction echange() en respectant ses spécifications.

    1
    2
    3
    4
    5
    def echange(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: str – la chaine dans laquelle le premier et le dernier caractère ont échangé de place.
        """
    

    Exemple de test

    >>> echange("Ceci est un exemple.")
    '.eci est un exempleC'
    
    Une solution
    def echange(chaine):
        """
        chaine – str (chaîne de caractères)
        Sortie: str – la chaine dans laquelle le premier et le dernier caractère ont échangé de place.
        """
        premier = chaine[0]
        dernier = chaine[len(chaine)-1]
        resultat = dernier
        for i in range(1, len(chaine)-1):
            resultat = resultat + chaine[i]
        resultat = resultat + premier
        return resultat
    

ProgF02.64 - Positions

  1. Complétez le corps de la fonction rang_premier() qui prend en paramètres un caractère et une chaîne de caractères. Cette fonction renvoie le premier indice auquel on trouve ce caractère dans la chaîne. Elle renvoie -1 s'il n'est pas présent dans la chaîne.

    1
    2
    3
    4
    5
    6
    7
    def rang_premier(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – premier indice auquel on trouve lettre dans chaine.
                Renvoie -1 si lettre n'est pas dans chaine.
        """
    

    Exemple de test

    >>> rang_premier('e', "Ceci est un exemple.")
    1
    
    >>> rang_premier('a', "Ceci est un exemple.")
    -1
    
    Une solution
    def rang_premier(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – premier indice auquel on trouve lettre dans chaine.
                Renvoie -1 si lettre n'est pas dans chaine.
        """
        for i in range(len(chaine)):
            if chaine[i] == lettre:
                return i
        return -1
    
  2. Complétez le corps de la fonction rang_dernier() qui prend en paramètres un caractère et une chaîne de caractères. Cette fonction renvoie le dernier indice auquel on trouve ce caractère dans la chaîne. Elle renvoie -1 s'il n'est pas présent dans la chaîne.

    1
    2
    3
    4
    5
    6
    7
    def rang_dernier(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – dernier indice auquel on trouve lettre dans chaine.
                Renvoie -1 si lettre n'est pas dans chaine.
        """
    

    Exemple de test

    >>> rang_dernier('e', "Ceci est un exemple.")
    18
    
    >>> rang_dernier('c', "Ceci est un exemple.")
    2
    
    >>> rang_dernier('a', "Ceci est un exemple.")
    -1
    
    Une solution
    def rang_dernier(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – dernier indice auquel on trouve lettre dans chaine.
                Renvoie -1 si lettre n'est pas dans chaine.
        """
        dernier_indice = -1
        for i in range(len(chaine)):
            if chaine[i] == lettre:
                dernier_indice = i
        return dernier_indice
    
  3. Complétez le corps de la fonction rang_deuxieme() qui prend en paramètres un caractère et une chaîne de caractères. Cette fonction renvoie le deuxième indice auquel on trouve ce caractère dans la chaîne. Elle renvoie -1 s'il n'est pas présent dans la chaîne ou bien s'il n'est présent qu'une fois.

    1
    2
    3
    4
    5
    6
    7
    def rang_deuxieme(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – deuxième indice auquel on trouve lettre dans chaine.
                Renvoie -1 si lettre n'est pas dans chaine ou bien si elle n'est présente qu'une seule fois.
        """
    

    Exemple de test

    >>> rang_deuxieme('e', "Ceci est un exemple.")
    5
    
    >>> rang_deuxieme('c', "Ceci est un exemple.")
    -1
    
    >>> rang_deuxieme('c', "coucou")
    3
    
    Une solution
    def rang_deuxieme(lettre, chaine):
        """
        lettre – str, un seul caractère
        chaine – str (chaîne de caractères)
        Sortie: int – deuxième indice auquel on trouve lettre dans chaine.
                Renvoie -1 si lettre n'est pas dans chaine ou bien si elle n'est présente qu'une seule fois.
        """
        deuxieme_indice = -1
        nb_occurrences = 0
        for i in range(len(chaine)):
            if chaine[i] == lettre:
                if nb_occurrences == 0 or nb_occurrences == 1:   
                    deuxieme_indice = i
                    nb_occurrences += 1
        if nb_occurrences < 2:
            return -1
        else:
            return deuxieme_indice