• Aucun résultat trouvé

variables phrase1, phrase2, phrase3 sont donc des variables de type string.

Remarquez l'utilisation des guillemets pour délimiter une chaîne dans laquelle il y a des apostrophes, ou l'utilisation d'apostrophes pour délimiter une chaîne qui contient des guillemets. Remarquez aussi encore une fois que l'instruction print insère un espace entre les éléments affichés.

Le caractère spécial "\" (antislash) permet quelques subtilités complémentaires :

En premier lieu, il permet d'écrire sur plusieurs lignes une commande qui serait trop longue pour tenir sur une seule (cela vaut pour n'importe quel type de commande).

Dans une chaîne de caractère, l'antislash autorise l'insertion d'un certain nombre de codes sépiaux (sauts à la ligne, apostrophes, guillemets, etc.). Exemples :

>>> txt3 = '"N\'est-ce pas ?" répondit-elle.' >>> print txt3

"N'est-ce pas ?" répondit-elle.

>>> Salut = "Ceci est une chaîne plutôt longue\n contenant plusieurs lignes \ ... de texte (Ceci fonctionne\n de la même façon en C/C++.\n\

... Notez que les blancs en début\n de ligne sont significatifs.\n" >>> print Salut

Ceci est une chaîne plutôt longue

contenant plusieurs lignes de texte (Ceci fonctionne de la même façon en C/C++.

Notez que les blancs en début de ligne sont significatifs.

Remarques :

 La séquence \n dans une chaîne provoque un saut à la ligne.

 La séquence \' permet d'insérer une apostrophe dans une chaîne délimitée par des apostrophes  Rappelons encore ici que la casse est significative dans les noms de variables (Il faut respecter

scrupuleusement le choix initial de majuscules ou minuscules). "Triples quotes" :

Pour insérer plus aisément des caractères spéciaux ou "exotiques" dans une chaîne, sans faire usage de l'antislash, ou pour faire accepter l'antislash lui-même dans la chaîne, on peut encore délimiter la chaîne à l'aide de triples guillemets ou de triples apostrophes11

: >>> a1 = """ ... Usage: trucmuche[OPTIONS] ... { -h ... -H hôte ... }""" >>> print a1 Usage: trucmuche[OPTIONS] { -h -H hôte }

5.2.2 Accès aux caractères d'une chaîne

Les chaînes sont un cas particulier d'un type de données que l'on appelle des données composites. Une donnée composite est une entité qui rassemble dans une seule structure un ensemble d'entités plus simples : dans le cas d'une chaîne, ces entités plus simples sont évidemment 11 L'utilisation de triples guillemets ou de triples apostrophes pour délimiter une chaîne de caractères n'est pas encore

les caractères.

Suivant les circonstances, nous souhaiterons traiter la chaîne comme un seul objet, ou au contraire la considérer comme une suite de caractères distincts.

Un langage de programmation tel que Python doit donc permettre d'accéder séparément à chacun des caractères d'une chaîne. Cela n'est pas très compliqué. En termes techniques, une chaîne est une collection ordonnée d'objets : les caractères de la chaîne sont disposés dans un certain ordre. Chaque caractère d'une chaîne peut donc être désigné par sa place dans la séquence, à l'aide d'un index. Sous Python, il suffit d'accoler un tel index au nom de la variable qui contient la chaîne, en l'écrivant entre crochets. D'une manière analogue, vous pouvez désigner tout un fragment (une "tranche") dans la chaîne, en utilisant deux index séparés par un double point.

Attention, cependant : comme vous aurez l'occasion de le vérifier par ailleurs, les données informatiques sont très souvent numérotées à partir de zéro (et non à partir de un). C'est le cas pour les caractères d'une chaîne. Analysez donc soigneusement les exemples ci-dessous :

>>> ch = "Stéphanie" >>> print ch[0], ch[3] S p >>> print ch[0:4] Stép >>> print ch[4:8] hani

La meilleure façon de se rappeler comment marche le "découpage en tranches" des exemples ci- dessus consiste à imaginer que les index pointent entre les caractères, le bord gauche du premier caractère étant noté zéro :

+---+---+---+---+---+---+---+---+---+ | S | t | é | p | h | a | n | i | e | +---+---+---+---+---+---+---+---+---+ 0 1 2 3 4 5 6 7 8 9

Les indices de découpage ont des valeurs par défaut : un premier indice non défini est considéré comme zéro, tandis que le second indice omis prend par défaut la taille de la chaîne complète : >>> print ch[:3] # les 3 premiers caractères

Sté

>>> print ch[3:] # tout sauf les 3 premiers caractères phanie

Nous verrons plus loin que Python dispose de nombreuses fonctions intégrées. Par exemple, la fonction len() permet de connaître la longueur (le nombre de caractères) d'une chaîne :

>>> print len(ch) 9

Exercices :

e 6. Déterminez vous-même ce qui se passe lorsque l'un ou l'autre des indices de découpage est erroné, et décrivez cela le mieux possible. (Si le second indice plus petit que le premier, par exemple, ou bien si le second indice est plus grand que la taille de la chaîne).

e 7. Découpez une grande chaîne en fragments de 5 caractères chacun. Réassemblez ces morceaux dans l'ordre inverse.

5.3 Les listes (première approche)

Les chaînes que nous avons abordées à la rubrique précédente constituaient un premier exemple de données composites, lesquelles sont utilisées pour regrouper de manière structurée des ensembles de valeurs. Vous apprendrez progressivement à utiliser plusieurs autres types de données composites, parmi lesquelles les listes, les tuples et les dictionnaires. Nous n'allons aborder ici que le premier de ces trois types, et de façon assez sommaire. Il s'agit là en effet d'un sujet fort vaste, sur lequel nous devrons revenir à plusieurs reprises.

Sous Python, on définit une liste comme une suite d'éléments séparés par des virgules, l'ensemble étant enfermé dans des crochets :

Exemple :

>>> jour = ['lundi','mardi','mercredi',1800,20.357,'jeudi','vendredi'] >>> print jour

['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi'] Dans cet exemple, la valeur de la variable jour est une liste.

Comme on peut le constater ci-dessus, les éléments qui constituent une liste peuvent être de types variés. Dans notre exemple, les trois premiers éléments sont des chaînes de caractères, le quatrième un entier, le cinquième un réel, etc. (Nous verrons plus loin qu'un élément d'une liste peut lui-même être une liste !). A cet égard, le concept de liste est donc assez différent du concept de "tableau" ou de "variable indicée" que l'on rencontre dans d'autres langages de programmation.

Les éléments d'une liste sont bien entendu référencés chacun par un index. Et comme c'était déjà le cas pour les caractères dans une chaîne, il faut se rappeler ici également que la numérotation de ces index commence à partir de zéro et non de un.

>>> jour = ['lundi','mardi','mercredi',1800,20.357,'jeudi','vendredi'] >>> print jour[2]

mercredi

>>> print jour[2:]

['mercredi', 1800, 20.357, 'jeudi', 'vendredi'] >>> print jour[:2]

['lundi', 'mardi']

A la différence de ce qui se passe pour les chaînes, qui constituent un type de données non- modifiables (nous aurons l'occasion de revenir là-dessus), il est possible de changer les éléments individuels d'une liste :

>>> print jour

['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi'] >>> jour[3] = jour[3] +47

>>> print jour

['lundi', 'mardi', 'mercredi', 1847, 20.357, 'jeudi', 'vendredi']

On peut remplacer certains éléments : >>> jour[3] = 'Juillet'

>>> print jour

['lundi', 'mardi', 'mercredi', 'Juillet', 20.357, 'jeudi', 'vendredi']

On peut en enlever :

>>> jour[3:5] = [] # [] est une liste vide >>> print jour

On peut en insérer :

>>> jour[2:2] = [7000,8000,9000] >>> print jour

['lundi', 'mardi', 7000, 8000, 9000, 'mercredi', 'jeudi', 'vendredi']

Note : si l'on n'insère qu'un seul élément, il faut s'assurer que cet élément soit du type 'liste'. Ainsi l'élément jour[4] n'est pas une liste (c'est l'entier 9000), alors que l'élément jour[5:7] en est une. Pour insérer un élément qui n'est pas déjà une liste, il faut le présenter entre crochets :

>>> jour[1:1] = [jour[4]] >>> print jour

['lundi', 9000,'mardi', 7000, 8000, 9000, 'mercredi', 'jeudi', 'vendredi']

La fonction intégrée len() s'applique aussi aux listes (elle indique le nombre d'éléments présents dans la liste) :

>>> len(jour) 9

Nous aurons encore beaucoup de choses à apprendre à propos des listes. Signalons simplement ici que sous Python, les listes sont une catégorie particulière d'objets, auxquels on pourra appliquer différentes méthodes (ces termes seront expliqués plus loin).

Avant cela, reprenons quelques exercices de programmation. Analysez le petit programme ci- dessous et commentez son fonctionnement :

>>> jour = ['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'] >>> a,b = 0,0 >>> while a<25: ... a = a + 1 ... b = a % 7 ... print a,jour[b] ... La 5e

ligne de cet exemple fait usage de l'opérateur "modulo", fréquemment utilisé en programmation, et que l'on représente par % dans de nombreux langages (dont Python).

Quelle est l'opération effectuée par cet opérateur ? Exercice :

e 8. Soient les listes suivantes :

t1 = [31,28,31,30,31,30,31,31,30,31,30,31]

t2 = ['Janvier','Février','Mars','Avril','Mai','Juin',

'Juillet','Août','Septembre','Octobre','Novembre','Décembre']

Écrivez un petit programme qui insère dans la seconde liste tous les éléments de la première, de telle sorte que chaque nom de mois soit suivi du nombre de jours correspondant :