Un type de variable particulier : les chaînes de caractères
Vous aurez souvent besoin de manipuler des chaînes de caractères, c'est à dire des suites de caractères pouvant former des mots, des phrases,...
Par exemple, c'est le type de l'information renvoyée par la fonction input()
( le type str
, qu'il a souvent fallu transtyper en entier ou flottant dans le chapitre précédent....)
Les chaînes de caractères sont des types de variables pour lesquelles quelques spécificités existent, et sur lesquelles des fonctions particulières peuvent s'appliquer.
1. Généralités sur les chaînes
1.1. Création/initialisation d'une chaîne de caractères
Lors de l'initialisation d'une variable de type chaîne, on utilise les guillemets simples ou doubles pour encadrer le contenu à stocker.
Par exemple :
La différence entre les deux écritures est que l’utilisation des guillemets doubles permet d'utiliser les guillemets simples à l'intérieur de la chaîne :
Il est parfois nécessaire d'initialiser une chaîne vide, c'est à dire qui ne contient aucun caractère :
1.2. Adressage d'un caractère dans une chaîne
Pour adresser ( = désigner ) un caractère particulier d'une chaîne ( et éventuellement le copier dans une autre variable ), on utilise l'écriture suivante :
chaine
est le nom de la variable contenant la chaîne, et index
la position ( ou indice ) du caractère depuis le début de la chaîne.
ATTENTION : une chaîne est, comme beaucoup de choses en informatique, "zéro-indexée", c'est à dire que la numérotation des caractères commence de
zéro et pas de 1
Si l'index est négatif, on compte les caractères depuis la fin de la chaîne ( le dernier caractère a l'index -1 ) :
1.3. Nombre de caractères
La fonction len(nom_de_la_chaine)
permet de déterminer le nombre de caractères présents dans une chaîne :
La fonction compte TOUS les caractères, ponctuation et espaces compris...
1.4. Concaténation
On peut créer une chaîne en "assemblant" plusieurs chaînes les unes aux autres : on dit alors qu'on les concatène.
On utilise pour cela l'opérateur de concaténation qui n'est autre que signe +
A ne donc pas confondre avec l'addition !
Il serait de toute façon aberrant d'essayer d'additionner une valeur à une chaîne ( les choux,les carottes,...). Essayez donc d'écrire quelque chose comme :
Il est possible de concaténer une chaîne au début ou à la fin d'une autre selon l'ordre dans lequel on écrit les deux chaînes lors de l'instruction de concaténation :
1.5. Des possibilités exotiques...
Python permet de plus des choses assez étonnantes et intuitives pour créer des chaînes de caractères.
Ainsi, si l'on veut par exemple créer une chaîne contenant plusieurs fois la même syllabe, il suffit d'écrire :
Pas très utile pensez-vous ? Pourtant, si cette possibilité existe, c'est qu'elle a bien des applications...
1.6. Les chaînes, objets itérables
De nombreux problèmes sur les chaînes de caractères nécessitent de parcourir l’intégralité de la chaîne afin d’obtenir la réponse à un problème donné, par exemple compter le nombre d'espaces dans une chaîne.
On peut parcourir successivement chaque caractère d'une chaîne, ont dit ainsi qu'une chaîne est itérable.
Pour réaliser cette itération, on utilise une structure appelée boucle d'itération :
Voila comment cela fonctionne :
- on peut traduire la première ligne par "pour chaque caractère dans la chaîne,..." : à chaque "tour" de la boucle, Python stocke successivement dans la variable
caractere
( on peut bien sûr utiliser un autre nom de variable...)
chaque caractère de la chaîne chaine
( autre nom possible bien entendu...)
- Python exécute alors la ou les instruction(s) présente(s) dans le bloc correspondant à la boucle d'itération: ces instructions sont en retrait par rapport au mot-clé for
pour signifier qu'elles appartiennent à ce bloc et doivent donc être exécutées à chaque tour.
- Une fois ces instructions exécutées, Python revient au début de la boucle et passe au caractère suivant.
- quand tous les caractères de la chaîne ont été parcourus, Python passe à la suite du script ( on "sort de la boucle").
Voila un exemple qui affiche successivement chaque caractère d'une chaîne :
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Seul Python propose cette façon d'itérer sur les caractères d'une chaîne; les autres langages utilisent une autre structure pour la boucle for
, que vous verrez plus tard.
1.7. Les chaînes, objets non-mutables
Une fois une chaîne de caractères créée, il n'est plus possible d'en modifier ou d'en supprimer un ou plusieurs caractères : on dit qu'une chaîne est un objet immuable non-mutable.
On ne peut que "copier" un ou plusieurs caractères dans une autre variable, ou ajouter d'autre(s) caractère(s) en début en en fin de chaîne.
Par exemple, on obtient une erreur en cherchant à remplacer un caractère par un autre :
1.8. Manipulation de chaîne
De très nombreuses fonctions sont applicables aux chaînes : mises en majuscules, en minuscules,...Si nécessaire, vous rechercherez celle(s) dont vous aurez besoin.
2. QCM de validation
3. Exercices et applications
3.1. Caractère au choix
Écrire un script qui :
- initialise et affiche une chaîne de caractères de longueur quelconque
- demande à l'utilisateur l'index d'un des caractères de la chaîne
- affiche le caractère de la chaîne situé à cet index
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers la RÉPONSE
3.2. Longueur d'une chaîne
Écrire un script qui :
- demande à l'utilisateur d'entrer une chaîne de caractère
- calcule puis affiche la longueur ( = nombre de caractères, espaces compris ) de cette chaîne
- compare le résultat obtenu avec la fonction intégrée à Python :
len(chaine)
AIDE
Il faudra parcourir tous les caractères de la chaîne, et utiliser une variable comme "compteur de caractères".
ALGORITHME
- demander à l'utilisateur d'entrer une chaîne et la stocker dans une variable
- initialiser à zéro une variable qui servira de compteur de caractères
- parcourir les caractères de la chaîne les uns après les autres, et à chaque "tour", incrémenter la variable compteur de 1
- une fois toute la chaîne parcourue, afficher la variable compteur
- utiliser la fonction
len()
pour afficher directement la longueur de la chaîne
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers la RÉPONSE
3.3. Miroir
Écrire un script qui demande à l'utilisateur d'entrer une chaîne de caractères, puis qui l'affiche en "miroir".
AIDE
Il faudra parcourir tous les caractères de la chaîne, et les concaténer à une autre chaîne ( initialement vide ), qui contiendra la première en miroir.
Attention du coup à l'ordre dans lequel faire cette concaténation !
ALGORITHME
- demander à l'utilisateur d'entrer une chaîne et la stocker dans une variable
- initialiser une variable chaîne vide
- parcourir les caractères de la chaîne les uns après les autres
- à chaque tour, concaténer le caractère au début de la chaîne "miroir"
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers la RÉPONSE