Favicon
NSI Première

Connexion élèves

Choisir le(s) module(s) à installer :

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,...

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.

Généralités sur les chaînes

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 :

				
	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 = ""						
									
				

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[indice]
				
			

chaine est le nom de la variable contenant la chaîne, et indice la position ( ou index ) du caractère depuis le début de la chaîne.

ATTENTION : une chaîne est, comme beaucoup de choses en informatique, "zéro-indiceé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'indice est négatif, on compte les caractères depuis la fin de la chaîne ( le dernier caractère a l'indice -1 ) :

				
>>> ma_chaine = "Python !"

>>> ma_chaine[-1]
'!'

>>> ma_chaine[-4]
'o'
				
			

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 :


ch3 = "Cool la NSI..."
print(len(ch3))

>>> 14
			

La fonction compte TOUS les caractères, ponctuation et espaces compris...

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 !

En informatique, comme partout ailleurs, on ne peut pas de toute façon "ajouter des choux et des carottes", par exemple concaténer une variable entière ( type int ) à une chaîne de caractères ( type str ), sinon Python affiche une erreur; il faut que les variables soient du même type, et il est donc parfois nécessaire de "transformer" une variable vers un autre type; on dit que l'on transtype cette variable.

Parfois, Python transtype automatiquement les variables ( par exemple, les flottants et les entiers "cohabitent" très bien dans les expressions ), mais ce n'est pas toujours le cas; il existe donc des fonctions pour cela :

Fonction transtypage vers le type...
int(variable) entier
float(variable) flottant
str(variable) chaîne

A vous de déterminer dans un code, les situation où un transtypage est nécessaire, et quel est alors le type le mieux adapté...

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'
				
			

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 :

				
>>> 'to' * 3
'tototo'

>>> 'toc-' * 4
'toc-toc-toc-toc-'	
						
			

Pas très utile pensez-vous ? Pourtant, si cette possibilité existe, c'est bien qu'elle a des applications...

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 :

				
for caractere in chaine : # les noms de variable sont indicatifs !
	# instruction(s) à exécuter
	..........
	..........
				
			

Voila comment cela fonctionne :

Voila un exemple qui affiche successivement chaque caractère d'une chaîne :

mot = "Vaugelas" for lettre in mot : print(lettre)

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.

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 :

				
>>> 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
				
			

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.

QCM de validation

Exercices et applications

Caractère au choix

Écrire un script qui :

  • initialise et affiche une chaîne de caractères de longueur quelconque
  • affiche le caractère de la chaîne situé à un indice quelconque
				
Voila la chaîne en mémoire : "You're talking to me ?"
Index du caractère : 2
Le caractère à l'indice 2 est : u				
							
			
# Votre code ici

Lien vers la RÉPONSE

Longueur d'une chaîne

Écrire un script qui :

  • initialise une chaîne de caractère
  • calcule puis affiche la longueur ( = nombre de caractères, espaces compris ) de cette chaîne, sans utiliser la fonction len
  • compare le résultat obtenu avec la fonction intégrée à Python : 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				
							
			

Voila un de vos premiers algorithmes de comptage par accumulation : on parcourt tous les caractères de la chaîne, et on utilise une variable comme "compteur de caractères"; cette variable sera incrémentée à chaque caractère, et "accumulera" donc petit à petit le nombre total des caractères de la chaîne.

# Votre code ici

Lien vers la RÉPONSE

Miroir

Écrire un script qui affiche une chaîne de caractères en "miroir".

			
La chaîne : 'Je suis ton père.'
La chaîne en miroir : '.erèp not sius eJ'				
							
			

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 !

# Votre code ici

Lien vers la RÉPONSE