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.
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 :
ma_chaine = "ABCDEF"
mon_autre_chaine = 'abcdefghg'
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 :
ma_chaine = "J'adore l'anglais !"
Il est parfois nécessaire d'initialiser une chaîne vide, c'est à dire qui ne contient aucun caractère :
chaine_vide =''
ou
chaine_vide = ""
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 :
>>> 'La valeur de pi est :' + 3.14
Traceback (most recent call last):
File "", line 1, in
TypeError: cannot concatenate 'str' and 'float' objects
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 :
chaine1 = 'abc'
chaine2 = chaine1 + 'def' # ajout A LA FIN de chaine1
print(chaine2)
>>> 'abcdef'
chaine3 = 'def' + chaine1 # ajout AU DÉBUT de chaine1
print(chaine3)
>>> 'defabc'
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 :
>>> 'to' * 3
'tototo'
>>> 'toc-' * 4
'toc-toc-toc-toc-'
Pas très utile pensez-vous ? Pourtant, si cette possibilité existe, c'est qu'elle a bien des applications...
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 :
for caractere in chaine : # les noms de variable sont indicatifs !
# instruction(s) à exécuter
..........
..........
Voila comment cela fonctionne :
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...)Voila un exemple qui affiche successivement chaque caractère d'une chaîne :
mot = 'Vaugelas'
for lettre in mot :
print(lettre)
V
a
u
g
e
l
a
s
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.
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[index]
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
>>> ma_chaine = "Python !"
>>> ma_chaine[0]
'P'
>>> ma_chaine[1]
'y'
>>> ma_chaine[3]
'h'
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 ) :
>>> ma_chaine = "Python !"
>>> ma_chaine[-1]
'!'
>>> ma_chaine[-4]
'o'
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 :
>>> nom = "Dupont"
>>> nom[5] = "d"
Traceback (most recent call last):
File , line 1, in
nom[5]="d"
TypeError: 'str' object does not support item assignment
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.
Écrire un script qui :
Voila la chaîne en mémoire : "You're talking to me ?"
Index du caractère : 2
Le caractère à l'index 2 est : u
Écrire un script qui :
len(chaine)
Entrer une chaîne : 'Forcément, elle va moins bien marcher...'
Longueur de la chaîne calculée : 40
Longueur de la chaîne avec la fonction len() : 40
AIDE
Il faudra parcourir tous les caractères de la chaîne, et utiliser une variable comme "compteur de caractères".
ALGORITHME
len()
pour afficher directement la longueur de la chaîneÉcrire un script qui demande à l'utilisateur d'entrer une chaîne de caractères, puis qui l'affiche en "miroir".
Entrer une chaîne : 'Je suis ton père.'
'.erèp not sius eJ'
AIDE
Il faudra parcourir tous les caractères de la chaîne, et les concaténer à une nouvelle chaîne qui contiendra la première en miroir.
Attention du coup à l'ordre dans lequel faire cette concaténation !
ALGORITHME