Les bases de Python pour le lycée

smalicet
128.4K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Cours : Les chaines de caractères

Présentation des chaines de caractères

Avec les nombres et les listes, les chaines de caractères sont les éléments informatiques qu'on utilise le plus couramment. Ce sont tout simplement des objets qui représentent du texte. Elles sont délimitées par des guillemets (ou apostrophes).

texte = "Ceci est une chaine de caractères"
calcul = "1 + 1"
addition = 1 + 1

Ainsi, texte et calcul sont de type chaines de caractères alors que addition est de type entier qui vaut 2.

Important. En python, les chaînes de caractères sont des objets immutables, c'est-à-dire qu'il s'agit d'objet que l'on ne peut pas modifier ! En effet, nous verrons que les différents traitements sur les chaines de caractères ne modifient jamais la chaîne de caractères elle-même, elles construisent une nouvelle chaîne de caractères à partir de l'ancienne.

Il y a énormément d'actions possibles sur les chaines de caractères, nous allons voir les principales.

Les actions de base

  • len(chaine) : Donne la longueur de la chaîne de caractères texte.

  • chaine[n] : Affiche le n-ième terme de la chaîne de caractères chaine. Attention. La première lettre commence à l'indice 0 !
    Astuce. Si on veut commencer par la fin : chaine[-1] est la dernière lettre, chaine[-2] l'avant dernière, etc.

  • chaine[debut:fin] : Affiche une partie de la chaîne de caractères. La sous-chaîne de caractères commence à l'indice debut et se termine à l'indice fin-1.

    Attention. La première lettre de la chaîne chaine correspond toujours à l'indice 0 et on ne prend pas la lettre d'indice fin.

    Astuce. Si on veut commencer au début de la chaîne chaine, on peut omettre l'indice de début : chaine[:fin]. De même, si on veut aller jusqu'à la fin de la chaîne chaine, on peut omettre l'indice de fin : chaine[debut:].

  • chaine1 + chaine2 : Concatène les deux chaînes de caractères, c'est-à-dire les met bout à bout dans l'ordre d'apparition.

    Remarque. Le dernier caractère de la chaîne chaine est un espace. Lors de la concaténation, les deux chaînes sont simplement mises bout à bout sans ajout de caractères supplémentaires.

    On peut, bien sûr, enchainer les concaténations : chaine1 + chaine2 + chaine3 + ...

  • str(objet) : Transforme (quand c'est possible) l'objet en chaîne de caractères. Utile pour récupérer, par exemple, tous les chiffres d'un nombre séparément.

    Dans l'exemple, on transforme le nombre nombre en chaine de caractères ce qui nous permet de récupérer les chiffres un à un sous forme de chaine de caractères. Si on veut les retransformer en nombre pour pouvoir faire des calculs, par exemple, on pourra utiliser int(str_5e_chiffre).

  • chaine * k : Crée une chaine de caractères dans laquelle on répète la chaîne de caractères chaine k fois.

    Attention. La variable k doit être de type entier !

  • sous_chaine in chaine : Renvoie la valeur True si la chaine de caractère sous_chaine est dans chaine et False sinon. À utiliser, par exemple, comme condition avec une structure alternative if.

    On vérifie si les chaînes de caractères "chante", "dur", "eau", "vers" et "chanter" sont dans la chaine de caractères stockée dans chaine.

    Voici un exemple d'utilisation dans une structure conditionnelle :

    if lettre in "aeiouy":
      print(f"La lettre {lettre} est une voyelle.")
    else :
      print(f"La lettre {lettre} n'est pas une voyelle.")
    

    Ce code permettrait par exemple de vérifier si la variable lettre est une voyelle ou pas.

  • Comparaisons entre chaines de caractères : On peut comparer, comme pour les nombres, des chaines de caractères.

    Le résultat de la comparaison est une booléen : True ou False. Il peut donc s'utiliser comme condition avec une structure alternative if ou répétitive while .

    Voici les différentes comparaisons possibles :

    • chaine1 == chaine2 : Renvoie True si la valeur des deux chaînes sont parfaitement identiques, False sinon.
    • chaine1 != chaine2 : Renvoie True si la valeur des deux chaînes ont au moins un caractère différent, False sinon.
    • chaine1 < chaine2 : Renvoie True si la valeur de la chaîne chaine1 précède la valeur de la chaîne chaine2 dans l'ordre lexicographique (l'ordre du dictionnaire).
    • chaine1 <= chaine2 : Comme < mais la valeur des deux chaînes peuvent être les mêmes.
    • chaine1 > chaine2 : Renvoie True si la valeur de la chaîne chaine1 suit la valeur de la chaîne chaine2 dans l'ordre lexicographique (l'ordre du dictionnaire).
    • chaine1 >= chaine2 : Comme < mais la valeur des deux chaînes peuvent être les mêmes.

    Pour ranger dans l'ordre lexicographique, on compare les deux premiers caractères de chaque texte. S'ils sont égaux, on compare le deuxième, etc. Par exemple : "azerty" < "azfa" car les premiers termes de chaque chaîne sont égaux. De même pour le deuxième. Pour le troisième, comme "e" < "f", il en résultat que "azerty" < "azfa". Il n'est pas nécessaire de regarder la suite.

    Ça fonctionne aussi pour les nombres dans une chaîne de caractères : "1234" < "2". En effet, on les compare comme des chaines de caractères et non comme des nombres. On regarde le premier caractère : "1" < "2" donc "1234" < "2".

    Pour être plus précis, pour comparer deux caractères, on compare en fait leur code Unicode. Donc on a "1" < "A" < "_" < "a" par exemple.

Codage Unicode

Grâce au codage Unicode, chaque caractère dispose d'une code Unicode unique.

Par exemple,

  • la lettre "A" dispose du code Unicode (ou ASCII) 65.
  • la lettre "é" dispose du code Unicode 233.
  • le caractère "€" dispose du code Unicode 8364.

Remarque. Les codes unicode utilisés par Python sont des nombres entiers exprimés en base décimale. Habituellement, les codes Unicode sont représentés en hexadécimal. Par exemple, le caractère "€" est représenté en Unicode par U+20AC.

Il existe des fonctions en Python qui permettent de passer des caractères à leur code Unicode et vice-versa :

  • ord(caractere) : Donne le code Unicode du caractère donné.

  • chr(code) : Donne le caractère correspondant au code Unicode donné.

Exemple. Je veux transformer un caractère en son suivant.

Expliquons un peu :

  1. On place le caractère "e" dans la variable caractere.
  2. On récupère son code unicode dans la variable code_unicode.
  3. On récupère le caractère suivant, celui dont le code est code_unicode + 1. Et on l'enregistre dans la variable caractere_suivant.
  4. On affiche le caractère suivant caractere_suivant.

Cet exemple utilise beaucoup de variables. On pourrait écrire directement print(chr(ord(caractere) + 1)) mais c'est moins clair. Petite question pour terminer : Qu'obtiendrait-on si caractere = "z" ?

QCM

Voici quelques QCM pour voir si vous avez bien compris. N'hésitez pas à relire ce qui précède si vous avez un doute.

QCM 1
chaine = "Un chasseur sachant chasser doit savoir chasser sans son chien."
print(chaine[5])
Que va afficher ce programme ?

QCM 2
chaine = "Un chasseur sachant chasser doit savoir chasser sans son chien."
print(chaine[:5])
Que va afficher ce programme ?

QCM 3
chaine = "Un chasseur sachant chasser doit savoir chasser sans son chien."
print(chaine[5:10])
Que va afficher ce programme ?

QCM 4
chaine = "Un chasseur sachant chasser doit savoir chasser sans son chien."
print(chaine[-2])
Que va afficher ce programme ?

QCM 5
chaine = "Un chasseur sachant chasser doit savoir chasser sans son chien."
print(chaine[:2] + chaine[6:8])
Que va afficher ce programme ?

QCM 6
chaine = "Un chasseur sachant chasser doit savoir chasser sans son chien."
print(...)
Que faut-il mettre à la place des ... pour afficher "sachant"?

QCM 7
chaine = "Un chasseur sachant chasser doit savoir chasser sans son chien."
print("ch" in chaine)
print("chant" in chaine)
print("Un chien" in chaine)
print("r s" in chaine)
print("un" in chaine)
Cochez les cases correspondant au numéro des lignes qui vont afficher True

Entrainement

Exercice 1

Pour le nombre n donné dans la fenêtre ci-dessous, énumérez ses chiffres.

Pour l'affichage, on utilisera print et les chiffres seront affichés en allant à la ligne à chaque fois.

Exercice 1

Exercice 2

Pour le texte donné dans la fenêtre ci-dessous, créer un programme qui affiche le nombre de voyelles.

Pour l'affichage, on utilisera print.

Exercice 2

Exercice 3

Pour le texte donné dans la fenêtre ci-dessous, créer un programme qui affiche l'indice de tous les "e" dans ce texte.

Pour l'affichage, on utilisera print et les indices seront affichés en allant à la ligne à chaque fois.

Exercice 3
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content