• Aucun résultat trouvé

CHAPITRE 2 Premiers pas

2.7. Chaînes de caractères

Les chaînes de caractères sont le typestrdePython. Une chaîne de caractères est une suite finie de caractères placés

– entre apostrophes (ou simples quotes)'ou

– entre triples apostrophes'''ou

– entre guillemets (ou doubles quotes)"ou

– entre triples guillemets""".

Les chaînes délimitées par des triple apostrophes ou triple guillemets sont appelées docstring. Certaines fonctions (en particulier la fonction help()), certains modules de documentation (le moduledoctest) utilisent ces docstrings pour extraire la documentation des fonctions, classes, modules, etc..

1 >>> 'spam eggs'

2 'spam eggs'

3 >>> 'Une chaîne qui \

4 a une suite'

5 'Une chaîne qui a une suite'

6 >>> "une chaîne entre guillemets"

7 'une chaîne entre guillemets'

8 >>> salut = """Ceci est une chaîne plutôt longue contenant 9 plusieurs

10 lignes de texte

11 Notez que les blancs au début de la ligne et les sauts de ligne 12 sont significatifs."""

13 >>> print (salut)

14 Ceci est une chaîne plutôt longue contenant

15 plusieurs

16 lignes de texte exactement

17 Notez que les blancs au début de la ligne et les sauts de ligne

2.7 Chaînes de caractères 37

Placé en fin de ligne, le caractère'\'(antislash) sert de « carte suite » pour indiquer à l’interpré- teur que la ligne courante et la suivante doivent être considérées comme une seule ligne logique. C’est le cas pour une ligne trop longue par exemple.

Pour « échapper » un caractère ayant une signification particulière, (par exemple une apostrophe 'fermant une chaîne de caractères) on le fait précéder du caractère'\'(antislash ou backslash). Il perd sa signification particulière, et devient un caractère standard.

1 >>> 'n\'est-ce pas' 2 "n'est-ce pas" 3 >>> "n'est-ce pas" 4 "n'est-ce pas" 5 >>> '"Oui," dit-il.' 6 '"Oui," dit-il.' 7 >>> "\"Oui,\" dit-il." 8 '"Oui," dit-il.'

9 >>> '"N\'est-ce pas," répondit-elle.'

10 '"N\'est-ce pas," répondit-elle.'

Les chaînes peuvent être concaténées (accolées) avec l’opérateur'+', et répétées avec'*':

1 >>> word = 'Help' + 'A'

2 >>> '<' + word*5 + '>'

3 '<HelpAHelpAHelpAHelpAHelpA>'

Il n’existe pas de type caractère enPython, un caractère est simplement une chaîne de longueur un.

1 >>> type('a')

2 <class 'str'>

3 >>> type('aaa')

4 <class 'str'>

La fonction intégréelen(), appliquée à une chaîne de caractères retourne le nombre de caractères de la chaîne :

1 >>> len('anticonstitutionnellement')

2 25

Les éléments d’une chaîne de caractèrechsont indexés (numérotés) de0àlen(ch)-1. On peut accéder à chaque caractère par l’opérateur crochet[]:

1 >>> ch = 'anticonstitutionnellement'

2 >>> ch[0]

3 'a'

4 >>> ch[len(ch)] #ouuuups

5 Traceback (most recent call last) :

6 [...]

7 ch[len(ch)] #ouuuups

8 IndexError : string index out of range

Les éléments d’une chaîne de caractères sont non modifiables.

1 >>> ch[0] = 'A' #ouuups

2 Traceback (most recent call last) :

3 [...]

4 ch[0] = 'A' #ouuups

5 TypeError : 'str' object does not support item assignment

On peut adresser les éléments d’une chaîne à partir de la fin, avec des indices négatifs, le dernier élément porte le numéro -1

1 >>> ch[-2]

2 'n'

On peut sélectionner des tranches (slices) d’une chaîne. Attention, le dernier élément n’est pas pris en compte :ch[1 :3]retournech[1], ch[2]

1 >>> ch[1 :4]

2 'nti'

On peut découper avec des indices négatifs :

1 >>> ch[1 :-4]

2 'nticonstitutionnelle'

Dans un slice (caractérisé par l’opérateur de slicing' :'), si une valeur manque d’un coté ou de l’autre de' :', elle désigne tout ce qui suit, ou tout ce qui précède :

1 >>> ch[5 :]

2.8 Listes 39 2.8. Listes

Les listes sont représentées par le typelistenPython. C’est une liste de valeurs (éléments) entre crochets et séparés par des virgules. Les éléments d’une même liste n’ont pas nécessairement le même type :

1 >>> a = ['Ossau', 2884, 'Mont Blanc', 4807]

2 >>> a

3 ['Ossau', 2884, 'Mont Blanc', 4807]

Comme les indices des chaînes, les indices des listes commencent à0, et les listes peuvent être découpées, concaténées, et ainsi de suite :

1 >>> a[0] 2 'Ossau' 3 >>> a[-2] 4 'Mont Blanc' 5 >>> a[1 :-1] 6 [2884, 'Mont Blanc'] 7 >>> a[ :2] + ['Soum de Rey', 1526]

8 ['Ossau', 2884, 'Soum de Rey', 1526]

9 >>> 3*a[ :2]

10 ['Ossau', 2884, 'Ossau', 2884, 'Ossau', 2884]

A la différence des chaînes, qui sont non-modifiables, les listes sont modifiables : il est possible de changer les éléments individuels d’une liste :

1 >>> a[2] = ''

2 >>> a

3 ['Ossau', 2884, '', 4807]

L’affectation dans des tranches est aussi possible, et cela peut même changer la taille de la liste :

1 >>> a = [1,2,3] 2 >>> a[0 :2] = [1, 12] 3 >>> a 4 [1, 12, 3] 5 >>> a[0 :2] = [] 6 >>> a 7 [3] 8 >>> a[1 :1] = ['pomme', 'tomate'] 9 >>> a 10 [3, 'pomme', 'tomate'] 11 >>> a[ :0] = a

12 >>> a

13 [3, 'pomme', 'tomate', 3, 'pomme', 'tomate']

La fonction intégréelen()s’applique aussi aux listes :

1 >>> len(a)

2 6

Il est possible « d’emboîter » des listes (créer des listes contenant d’autres listes) :

1 >>> q = [2, 3]

2 >>> p = [1, q, 4]

3 >>> len(p)

4 >>> p[1][0]

5 2

Dans l’exemple précédent,p[1]etqse réfèrent réellement au même objet.

Dans l’exemple suivant, on teste cette assertion , par l’utilisation du mot-cléis, puis en changeant une valeur de la listeq:

1 >>> p[1] is q

2 True

3 >>> q[0] = 'OOOH'

4 >>> p

5 [1, ['OOOH', 3], 4]

La méthode de listeappend()ajoute en fin de liste un élément tel quel. Contrairement à l’opé- rateur+qui ajoute les éléments d’une autre liste.

1 >>> p = [1, 2, 3]

2 >>> p.append('xtra')

3 >>> p

4 [1, 2, 3, 'xtra']

Une chaîne de caractères n’est pas une liste, mais on peut la transformer en liste :

1 >>> p = [1, 2, 3]

2 >>> p = [1,2,3]+'xtra'

3 Traceback (most recent call last) :

4 [...]

5 p = [1,2,3]+'xtra'

6 TypeError : can only concatenate list (not "str") to list

7 >>> p = [1,2,3]+list('xtra')

2.9 Dictionnaires 41

9 [1, 2, 3, 'x', 't', 'r', 'a']

Lorsque l’on tente d’exécuter une instruction illicite, une exception est levée, et l’interpréteur affiche des lignes commençant parTraceback, citant l’instruction mise en cause, pour finir par le nom de l’exception (ici TypeError) et un message associé. Ces messages sont en général explicites et suffisent à comprendre l’erreur. Ici on a tenté de concaténer une chaîne à une liste, ce qui a déclenché l’exception car on ne peut concaténer qu’une liste à une liste.

On peut supprimer des éléments dans une liste, la vider :

1 >>> p = [1,2,3] 2 >>> p[1]=[] 3 >>> p 4 [1, [], 3] 5 >>> p[ :] = [] #ou p = [] 2.9. Dictionnaires

Comme un dictionnaire de traduction français-anglais par exemple, les dictionnairesPythonfonc- tionnent par couple clé :valeur

Les opérations principales sur un dictionnaire sont :

– La création :

1 >>> alt = {'Rakaposhi' : 7788, 'Moule de Jaout' : 2050}

– le stockage d’une valeur à l’aide d’une certaine clé,

1 >>> alt['Vignemale'] = 3298

– l’extraction de la valeur en donnant la clé,

1 >>> alt['Rakaposhi']

2 7788

– la suppression de couples (clé : valeur) avec l’instruction del ou la méthode dict.pop(). Cette dernière supprime et renvoie l’entrée correspondant à la clé donnée en argument :

1 >>> del alt['Vignemale']

2 >>> alt.pop('Rakaposhi')

3 7788

4 >>> alt

L’accès à la liste des clés, des valeurs et des couples (clé,valeur) est assuré par les méthodes suivantes :

keys()retourne une liste de toutes les clés utilisées dans le dictionnaire, dans un ordre quel- conque (pour obtenir une liste triée, appliquer la méthode sort() à la liste des clés). L’ex- pressionkey in mondictretourneTruesi la clékeyest dans le dictionnairemondict4;

values()renvoie une liste des valeurs ;

items()retourne la liste des couples (clé, valeur) Voici un exemple d’utilisation :

1 >>> alt = {'Rakaposhi' : 7788, 'Moule de Jaout' : 2050, 'Vignemale ' : 3298}

2 >>> alt.keys()

3 dict_keys(['Vignemale', 'Moule de Jaout', 'Rakaposhi'])

4 >>> alt.values()

5 dict_values([3298, 2050, 7788])

6 >>> alt.items()

7 dict_items([('Vignemale', 3298), ('Moule de Jaout', 2050), (' Rakaposhi', 7788)])

8 >>> 'Rakaposhi' in alt

9 True

Documents relatifs