Contenu principal
Chapitre 7 · Les listes › Leçon 5 sur 8

Manipuler les chaînes de caractères

Dans cette leçon nous approfondissons la notion de chaînes de caractères pour voir leurs similarités avec les listes. Cela nous permettra de les manipuler efficacement dans la leçon de cryptographie !

  1. 1

    Il y a deux grandes similarités entre les listes et les chaînes de caractères. La première : les lettres d'une chaîne de caractères sont indexées, comme les éléments d'une liste. C'est-à-dire qu'elles sont numérotées en partant de 0.

    Par exemple dans la chaîne de caractères "Python" la lettre numéro 0 est le 'P', la lettre numéro 1 le 'y' etc.

    Donc on peut facilement récupérer l'initiale d'un mot :

    >>> "Python"[0]
    'P'

    Dans l'éditeur, il y a un message d'un boucher à son collègue. Exécute le code puis, dans la console, affiche la cinquième lettre du message en utilisant la notation indicée.

    Solution

    La cinquième lettre est à l'indice numéro 4 :

    >>> message[4]
    e
  2. 2

    Deuxième similarité : on peut itérer sur les éléments d'une string, c'est-à-dire les lettres qui la compose. Ainsi en faisant :

    for c in "Python":
    	print(c)

    On affiche une à une chaque lettre de la chaîne "Python". La variable c (pour caractère) peut se nommer différemment. À chaque itération cette variable prend la valeur du caractère suivant et peut être utilisée dans le corps de la boucle (par exemple dans le print )

    Utilise une boucle pour afficher un à un les caractères contenus dans la variable message

    Solution

    On adapte le code de l'exemple :

    for c in message:
    	print(c)
  3. 3

    Comme les listes et chaînes de caractères sont itérables, il y a des fonctions communes aux deux. Par exemple len.

    Combien y a-t-il de caractères dans la variable message ? Utilise la fonction len dans la console pour le savoir.

    Solution

    On appelle la fonction len sur la variable message

    >>> len(message)
    30

    Il y a donc 30 caractères dans la variable message. Ce nombre compte tous les caractères même les espaces et la ponctuation.

  4. 4

    Voici un nouveau concept : il est possible de faire des opérations sur les listes et les chaînes de caractères. On peut par exemple additionner deux listes pour créer une plus grande liste contenant tous les éléments :

    >>> [1,2] + [3,4]
    [1,2,3,4]

    De même on peut additionner deux chaînes de caractères pour former une chaîne plus grande :

    >>> "bon" + "jour"
    'bonjour'

    Cette opération s'appelle la concaténation. Pratique pour ajouter un élément à la fin ou au début.

    Dans la console utilise une addition pour ajouter la chaîne " stp" à la fin de la variable message. Attention aux espaces.

    Solution

    Il faut faire une concaténation de la variable message et de la chaîne " stp" qui contient un espace initial.

    >>> message + " stp"
    passe le morceau un peu rassis stp
  5. 5

    Autre nouveauté : la notation indicée permet aussi de sélectionner plusieurs éléments.

    Par exemple message[6:8] permet d'obtenir tous les caractères entre l'indice 6 et 8 exclu, donc les indices 6 et 7 :

    >>> message[6:8]
    le
    

    Et pour avoir tous les caractères jusqu'à la fin, je n'indique que l'indice de départ en laissant les ':'

    >>> message[6:]
    le morceau un peu rassis
    

    Utilise cette notation dans la console pour afficher tous les caractères de la variable message à partir de l'indice 17.

    Solution

    Pour avoir tous les caractères à partir de l'indice 17 on indique uniquement le premier indice :

    >>> message[17:]
    un peu rassis
    
  6. 6

    Enfin, certaines propriétés sont propres aux chaînes de caractères. Cela se traduit par des méthodes qui n'existent que sur ce type.

    Par exemple split nous permet de découper une chaîne à chaque occurrence d'un caractère donné. Cette méthode renvoie une liste. Pratique pour avoir la liste les mots qui composent un message, on découpe à chaque espace :

    >>> "sur un arbre perché".split(' ')
    ["sur", "un", "arbre", "perché"]
    

    Pour avoir la liste des consonnes de kayak je découpe à chaque a :

    >>> "kayak".split('a')
    ["k","y","k"]

    Dans l'éditeur crée une variable mots contenant la liste des mots de la variable message et affiche cette liste à l'aide d'un print

    Solution

    Il faut découper la chaîne de caractères de la variable message à chaque espace :

    message = "passe le morceau un peu rassis"
    mots = message.split(' ')
    print(mots)
  7. 7

    Crée une boucle for qui itère sur chacun des mots de la liste mots et utilise la notation indicée pour afficher toutes les lettres de ces mots à partir de l'indice 1.

    Solution

    Pour chaque mot de la liste mots on souhaite afficher toutes les lettres qui le compose à partir de l'indice 1 :

    message = "passe le morceau un peu rassis"
    mots = message.split(' ')
    
    for mot in mots:
    	print(mot[1:])

De cette manière on peu modifier une chaîne de caractères en la transformant mot à mot. On peut remplacer l'initiale de chaque mot par un X en faisant la concaténation 'x' + mot[1:]. Ou bien on pourrait aussi mettre l'initiale à la fin du mot avec la concaténation mot[1:] + mot[0]. De cette manière on obtient notre propre language incompréhensible de l'extérieur, notre propre argot !

Chargement...

Collecte des fichiers...

>>>