La leçon 7 est composée de trois parties, A, B, C qui peuvent être complétées dans n'importe quel ordre.
Jusqu'à présent, nous avons utilisé les chaînes (éléments de type str
) de manière simple. Dans cette leçon, nous allons vous montrer comment manipuler les chaînes: comment les découper, les combiner et comment voir les caractères individuels qui les composent.
Qu'est-ce qu'une chaîne?
Toutes les données stockées sur un ordinateur sont au final stockées comme une séquence de 0 et de 1. Cela inclut le texte, les livres digitaux, les images, les sons, les vidéos et les "fichiers exécutables" comme les jeux et les applications. Les chaînes, un exemple de données de texte, sont stockées de la manière suivante:
- une chaîne est une séquence de cartactères (e.g. la chaîne "Hello, World!" contient 13 caractères incluant les lettres, comme par exemple "H", "e" et de la ponctuation, comme par exemple ",", "!")
- chaque caractère de la chaîne est représenté par un nombre (e.g., "H" est représenté par le nombre 40)
(Les nombres sont stockés en interne au format 0-1 binaire.)
Manipuler les chaînes comme séquences de caractères: S[]
Pour manipuler une chaîne, on doit accéder à chacun des caractères qui la compose. En Python, cela se fait de la manière suivante: pour une chaîne S
et un entier index
, la notation
S[index]retourne le caractère
S
à la position index
. Par convention, la chaîne commence à l'index 0: donc S[0]
est le premier caractère, S[1]
est le second caractère, etc. Dans "Hello, World!" la liste des caractères est:
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 Char.: H e l l o , W o r l d !Notez que le caractère à l'index 6 est un espace.
Dans beaucoup d'autres langages de programmation, il y a un type de données séparé pour les caractères. En Python, les caractères sont représentés par des chaînes de longueur , donc leur type est str . |
Trouver le nombre de caractères dans une chaîne: len
Pour obtenir le nombre de caractères d'une chaîne, on utilise en Python la fonction len
. Par exemple, len("Hello, World!")
est 13.
S
?len(S)
vous donne le nombre total de caractères de la chaîne, car il commence avec l'indice 0, le dernier caractère est à l'indice len(S)-1
.Voici un exemple d'utilisation de len
et []
, les deux outils que nous venons d'introduire.
Découper des chaînes: S[:]
Découper des partie de chaînes donne des sous-chaînes. Par exemple, les chaînes "vide" et "ment" sont des sous-chaînes de "évidemment". Pour extraire une sous-chaîne en Python, on utilise la syntaxe
S[premierIndex:dernierIndex]pour obtenir la sous-chaîne commençant à l'index premierIndex et se terminant à dernierIndex-1. Essayez de deviner la sortie de ce code avant de l'exécuter.
Notez qu'en prenant les sous-chaînes, premierIndex est inclu alors que dernierIndex ne l'est pas. C'est une source d'erreur courante. Cependant, cela a des effets intéressants. Par exemple, la longueur de la sous-chaîne S[i:j] est toujours j-i . |
Coller des chaînes: +
Nous savons tous que 1+2=3. Avec les chaînes, nous obtenons le résultat suivant à la place:
Comme vous pouvez le voir, l'effet de S+T
est de créer une nouvelle chaîne qui commence avec S
et a T
immédiatement après. Ce collage de chaîne s'appelle également concaténation.
Si vous voulez concaténer deux nombres, il faut d'abord les convertir en str . Sinon vous obtiendrez une de deux erreurs possibles suivant l'ordre dans lequel vous essayez. Exécutez ce programme pour voir les erreurs qui peuvent se produire.
Voici un exemple correct: la fonction str() convertie le nombre en chaîne avant la concaténation.
|
Comme nous l'avons mentionné dans la leçon 4, vous pouvez multiplier chaînes et entiers: S * n
est un raccourci pour S + S + ... + S
.
Codes de caractères: ord
, chr
Comme nous l'avons mentionné dans l'introduction de cette leçon, l'ordinateur représente chaque caractère comme un nombre. Quel nombre correspond à quel caractère? En général, cela dépend de l'encodage que votre ordinateur utilise, mais presque tous les ordinateurs ont un ensemble standard de caractères pour les nombres compris entre 32 and 255. Voici une liste des caractères avec les nombres entre 32 et 127:
ord: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 chr: ! " # $ % & ' ( ) * + , - . / ord: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 chr: 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ord: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 chr: @ A B C D E F G H I J K L M N O ord: 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 chr: P Q R S T U V W X Y Z [ \ ] ^ _ ord: 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 chr: ` a b c d e f g h i j k l m n o ord: 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 chr: p q r s t u v w x y z { | } ~Plus tard, dans la leçon 8, nous écrirons un programme qui génère cette table.
Il n'est pas utile de mémoriser cette table mais voici quelques points dont il faut se souvenir:
- les lettres minuscules a, b, c, ..., z ont des codes consécutifs
- les lettres majuscules A, B, C, ..., Z ont des codes consécutifs
- les chiffres 0, 1, 2, ..., 9 ont des codes consécutifs
Le caractère 32 est un espace alors que le caractère 127 est un des caractères spéciaux de "contrôle". Des caractères de contrôle utiles sont par exemple 9 pour la tabulation, 10 et 13 pour les fins de lignes.
En Python, vous pouvez convertir un caractère en son code numérique correspondant en utilisant la fonction ord
. La fonction chr
fait le contraire: elle prend un nombre comme paramètre et retourne le caractère correspondant à ce code.
Certains systèmes supporte les caractères imprimables entre 32 et 127; d'autres ont des caractères imprimables jusqu'à 255 ou 65535; en Unicode, il y a des centaines de milliers de caractères. Vous pouvez lire plus sur leur historique ici ou ici. |
Voici deux exercices pour finir cette leçon.
Continuez à la leçon suivante!