Retour sur les chaînes de caractères

3.1 Retour sur les chaînes de caractères

Objectifs d'apprentissage

À la fin de cette section, vous devriez être capable de :

  • Extraire un caractère spécifique d'une chaîne de caractères à l'aide d'un indice.
  • Utiliser des séquences d'échappement pour représenter des caractères spéciaux.

Indices

Une chaîne de caractères est une séquence comportant zéro, un ou plusieurs caractères. Chaque caractère possède un indice qui indique sa position. Les indices sont numérotés de gauche à droite, en commençant par 0. Les indices sont également numérotés de droite à gauche, en commençant par -1.

Faites le point

Indices des chaînes

Concepts en pratique

Indices des chaînes

1.
Quel est l'indice du deuxième caractère dans une chaîne de caractères ?
  1. 1
  2. 2
  3. -2
2.
Si s = "Python!", quelle est la valeur de s[1] + s[-1] ?
  1. "P!"
  2. "y!"
  3. "yn"
3.
Si s = "Python!", quel est le type d'objet de s[0] ?
  1. character
  2. integer
  3. string

Unicode

Python utilise Unicode, la norme internationale pour représenter du texte sur les ordinateurs. Unicode définit un numéro unique, appelé point de code (code point), pour chaque caractère possible. Ex. : "P" a pour point de code 80, et "!" a pour point de code 33.

La fonction intégrée ord() convertit un caractère en un point de code. Ex. : ord("P") renvoie l'entier 80. De même, la fonction intégrée chr() convertit un point de code en un caractère. Ex. : chr(33) renvoie la chaîne de caractères "!".

Unicode est une extension d'ASCII (American Standard Code for Information Interchange). À l'origine, ASCII ne définissait que 128 points de code, ce qui suffisait pour prendre en charge la langue anglaise. Unicode définit plus d'un million de points de code et prend en charge la plupart des langues écrites du monde.

      32  (space)  
      33  !
      34  "
      35  #
      36  $
      37  %
      38  &
      39  '
      40  (
      41  )
      42  *
      43  +
      44  ,
      45  -
      46  .
      47  /
      48  0
      49  1
      50  2
      51  3
      52  4
      53  5
      54  6
      55  7
      56  8
      57  9
      58  :
      59  ;
      60  <
      61  =
      62  >
      63  ?
        64  @        
        65  A
        66  B
        67  C
        68  D
        69  E
        70  F
        71  G
        72  H
        73  I
        74  J
        75  K
        76  L
        77  M
        78  N
        79  O
        80  P
        81  Q
        82  R
        83  S
        84  T
        85  U
        86  V
        87  W
        88  X
        89  Y
        90  Z
        91  [
        92  \
        93  ]
        94  ^
        95  _
      96  `
      97  a
      98  b
      99  c
     100  d
     101  e
     102  f
     103  g
     104  h
     105  i
     106  j
     107  k
     108  l
     109  m
     110  n
     111  o
     112  p
     113  q
     114  r
     115  s
     116  t
     117  u
     118  v
     119  w
     120  x
     121  y
     122  z
     123  {
     124  |
     125  }
     126  ~
     127  (delete)
Tableau 3.1 Valeurs des caractères. Ce tableau présente les points de code de 32 à 127 tels que définis par ASCII et Unicode. Les points de code de 0 à 31 sont des caractères non imprimables qui étaient utilisés pour les télécommunications.

Concepts en pratique

ord() et chr()

4.
Quel est le point de code de la lettre A ?
  1. 1
  2. 65
  3. 97
5.
Quelle valeur renvoie ord("0") ?
  1. 0
  2. 48
  3. Error
6.
Que renvoie chr(126) ?
  1. ~
  2. "~"
  3. Error

Caractères spéciaux

Une séquence d'échappement (escape sequence) utilise une barre oblique inverse (\) pour représenter un caractère spécial au sein d'une chaîne de caractères.

Séquence d'échappement Signification Exemple Sortie à l'écran
\n
Un caractère de retour à la ligne qui indique la fin d'une ligne de texte.
print("Escape\nsequence!")

Escape
sequence!

\t
Un caractère de tabulation ; utile pour indenter des paragraphes ou aligner du texte sur plusieurs lignes.
print("Escape\tsequence!")
Escape    sequence!
\'
Une apostrophe (guillemet simple) ; une alternative à l'encadrement de la chaîne par des guillemets doubles.
print('I\'ll try my best!')
I'll try my best
\"
Un guillemet double ; une alternative à l'encadrement de la chaîne par des guillemets simples.
print("I heard you said \"Yes\"")
I heard you said "Yes"
\\
Un caractère de barre oblique inverse.
print("This prints a \\")
This prints a \
Tableau 3.2 Séquences d'échappement courantes.

Concepts en pratique

Tabulations et retours à la ligne

7.
Laquelle des propositions suivantes est une séquence d'échappement ?
  1. t
  2. /t
  3. \t
8.
Quelle instruction affiche une barre oblique inverse (\) à l'écran ?
  1. print(\\)
  2. print(\"\")
  3. print("\\")
9.
Quelle instruction affiche Enter et here sur des lignes séparées ?
  1. print("Enter here")
  2. print("Enter" + \n + "here")
  3. print("Enter" + "\n" + "here")

À vous d'essayer

Citation de Hopper

Grace Hopper (1906–1992) était une informaticienne de renom (et contre-amirale dans l'US Navy !) qui a eu l'idée de concevoir des langages de programmation indépendants des machines. Elle a imaginé un langage de programmation fondé sur l'anglais et a apporté de nombreuses contributions qui ont ouvert la voie aux langages de programmation modernes, notamment Python.

Écrivez un programme qui affiche le texte suivant, en incluant les guillemets. Votre programme ne doit comporter aucun guillemet simple (') dans le code. La dernière ligne doit être indentée avec un caractère de tabulation.

    "To me programming is more than an important practical art.
    It is also a gigantic undertaking in the foundations of knowledge."
    	-- Grace Hopper

À vous d'essayer

Chiffre de César

Sous l'Empire romain, Jules César (100–44 av. J.-C.) utilisait une technique simple pour chiffrer des messages privés. Chaque lettre du message était remplacée par la lettre située trois rangs plus loin dans l'alphabet. Ex. : si le message était CAT, le C devenait F, le A devenait D et le T devenait W, donnant ainsi le message FDW. Cette technique est appelée chiffrement par décalage, car chaque lettre est décalée d'un certain nombre de rangs. Dans le cas de César, le décalage était de trois, mais d'autres valeurs (autres que 0) fonctionneraient également.

Écrivez un programme qui invite l'utilisateur à saisir les deux valeurs suivantes (exemple de saisie en gras) :

    Enter a 3-letter word: CAT
    Shift by how many letters? 3

Le programme doit ensuite décaler chaque lettre du mot du nombre souhaité. D'après l'exemple ci-dessus, la sortie serait :

    The secret message is: FDW

Indication : Utilisez la fonction ord() pour convertir chaque lettre en un entier, ajoutez la valeur du décalage à chaque entier, utilisez la fonction chr() pour convertir chaque entier en un caractère, et concaténez les caractères résultants.