NSI Première

Les séquences en Python

Il est possible de " stocker " plusieurs grandeurs dans une même structure, ce type de structure est appelé une séquence

.

De façon plus précise, nous définirons une séquence comme un ensemble fini et ordonné d'éléments indicés de 0 à n-1
(si cette séquence comporte n éléments).
Rassurez-vous, nous reviendrons ci-dessous sur cette définition.
Nous allons étudier plus particulièrement 3 types de séquences :

(il en existe d'autres que nous n'évoquerons pas ici).

Dans ce cours, nous étudirons uniquement Les chaînes de caractères

Chaînes de caractères

Les chaînes de caractères ne sont pas comme les entiers, les flottants et les booléens.
Une chaîne de caractères est une séquence, ce qui signifie que c'est une collection ordonnée d'autres valeurs.
Dans cette partie, vous verrez comment accéder aux caractères qui composent une chaîne, et vous apprendrez à utiliser certaines des méthodes que les chaînes de caractères fournissent.

1. Une chaîne de caractères est une séquence

Une chaîne de caractères est une séquence de caractères.

Vous pouvez accéder aux caractères un par un, en utilisant l'opérateur [] d'indexation

La seconde instruction sélectionne le caractère numéroté par 1 de fruit et l'affecte à lettre.

L'expression entre crochets s'appelle un indice.
L'indice indique quel caractère de la séquence vous voulez (d'où son nom).


Mais il se peut que vous n'obteniez pas ce que vous attendez :

Pour la plupart des gens, la première lettre du mot 'banane' est b , et non a.
Mais pour les informaticiens, l'indice est un décalage à partir du début de la chaîne, et le décalage de la première lettre est zéro.

Donc b est la lettre numéro 0 (la « zéro-ième ») de 'banane', a est la lettre numéro 1 (« un-ième »), et n est la lettre numéro 2 (« deux-ième »).

Remarque

Comme indice, vous pouvez utiliser une expression qui contient des variables et des opérateurs:

Mais la valeur de l'indice doit être un entier.
Sinon, vous obtenez l'erreur suivante :

2. Fonction len()

len() est une fonction interne qui retourne le nombre des caractères d'une chaîne

Remarque

Attention
Pour obtenir la dernière lettre d'une chaîne de caractères, vous pourriez être tentés à écrire quelque chose comme ceci :

Mais cela va provoquer une ERREUR. La raison de IndexError est qu'il n'y a aucune lettre dans 'banane' ayant l'indice 6.
Puisque nous avons commencé à compter à partir de zéro, les six lettres sont numérotées de 0 à 5.
Pour obtenir le dernier caractère, vous devez soustraire 1 de longueur :

Astuce

Vous pouvez utiliser des indices négatifs, qui comptent à l'envers à partir de la fin de la chaîne.
L'expression :

3. Parcours avec une boucle for

Beaucoup de calculs impliquent le traitement d'une chaîne caractère par caractère.
Souvent, ils commencent au début, sélectionnent chaque caractère à tour de rôle, lui font quelque chose et continuent jusqu'à la fin.
Ce modèle de traitement est appelé un parcours.
Une façon d'écrire un tel parcours est une boucle while

Cette boucle parcourt la chaîne et affiche chaque lettre sur une ligne individuelle.
La condition de la boucle est index < len(fruit),
donc lorsque l'indice devient égal à la longueur de la chaîne, la condition devient fausse, et le corps de la boucle ne s'exécute plus.
Le dernier caractère accédé est celui d'indice len(fruit) -1, qui est le dernier caractère de la chaîne.

Une autre façon d'écrire un parcours est d'utiliser une boucle for:

À chaque passage dans la boucle, le caractère suivant dans la chaîne est affecté à la variable lettre.
La boucle continue jusqu'à ce qu'il n'y ait aucun caractère restant.

4. Tranches de chaînes de caractères

Un segment de chaîne de caractères s'appelle une tranche ou slice en anglais.
La sélection d'une tranche est similaire à la sélection d'un caractère

Exemple

>>> texte = 'Monty Python'
>>> texte[0:5]
'Monty'
>>> texte[6:12]
'Python'

L'opérateur [n:m] retourne la partie de la chaîne allant du « n-ième » caractère, y compris celui-ci, au« m-ième » caractère, en excluant ce dernier.
Ce comportement est contre-intuitif, mais si vous imaginez les indices comme pointant entre les caractères, comme sur la Figure ci-dessous, cela peut vous aider. image.png

Remarques
>>> fruit = 'banane'
>>> fruit[:3]
'ban'
>>> fruit[3:]
'ane'
>>> fruit = 'banane'
>>> fruit[3:3]
''

5. Les chaînes sont des séquences non modifiables

Les chaînes de caractères sont immuables (on dit aussi non mutables), ce qui signifie que vous ne pouvez pas modifier une chaîne existante.
Le mieux que vous puissiez faire est de créer une nouvelle chaîne qui est une variation sur l'original.

Exemple

Cette erreur est provoquée à la deuxième ligne du script.

On y essaie de remplacer une lettre par une autre dans la chaîne, mais cela n'est pas permis.

Pour faire cela, il faut créer une nouvelle chaîne de catactères :

5. Méthodes de chaînes de caractères

Les chaînes de caractères fournissent des méthodes qui effectuent une variété d'opérations utiles.

Une méthode est semblable à une fonction - elle prend des arguments et renvoie une valeur -, mais la syntaxe d'appel est différente.

Au lieu de la syntaxe de fonction upper(mot), elle utilise la syntaxe de méthode, mot.upper().
Cette forme de notation pointée indique le nom de la méthode, upper, et le nom de la chaîne sur laquelle on applique la méthode, mot.
Les parenthèses vides indiquent que cette méthode ne prend aucun argument.

Un appel de méthode est appelé une invocation ; dans ce cas, nous dirions que nous invoquons upper sur mot.

Cette méthode permet de trouver la position (l'indice) où le caractère choisi apparaît dans une chaine de caractère.

Dans cet exemple, nous invoquons find sur mot et passons la lettre que nous recherchons en tant que paramètre.

Remarque

Pour trier les lettres d'une chaîne de caractères, on utlise la fonction sorted(). Cette fonction retourne une liste rangée dans l'ordre alphabétique.