• Keine Ergebnisse gefunden

Formatage de valeurs à l’intérieur d’une chaine de caractères

2.1. Les chaînes de caractères

2.1.11. Formatage de valeurs à l’intérieur d’une chaine de caractères

Il arrive très souvent que l’on veuille récupérer la valeur d’une variable et l’intégrer à une chaine de caractères pour former une nouvelle chaine de caractères utilisable à d’autres fins. Par exemple, pour l’affichage (avec la fonction print()) des valeurs d’une variable en plein milieu d’une chaine de texte formant par exemple un message, on a souvent besoin de formater d’abord la valeur de la variable avant de pouvoir le concaténer avec les autres caractères pour former le message. Car, comme nous l’avons montré précédemment, il n’est pas possible de concaténer la valeur d’une variable numérique avec celle d’une variable caractères sans convertir celle-ci d’abord en chaine de caractère en utilisant par exemple la fonction str(). Cette opération de conversion se ramène très souvent à un formatage. Le formatage d’une valeur sous python est une opération très spéciale qui mérite une longue explication. Le but de cette section est de donner un aperçu général sur les méthodes de formatage de valeurs.

Pour introduire la notion de formatage de valeur, nous allons partir d’un exemple concrèt. Soit la variable prix définie comme suit

prix=2

Nous voulons afficher un message de genre "Le prix du stylo est de 2 euros". Dans ce message, 2 correspond à la valeur de la variable prix définie ci-dessus. Mais prix étant une variable, on souhaite que le message aussi se modifie lorsque le prix change. Par exemple lorsque prix=5 alors on aura le message "Le prix du stylo est de 5 euros". Le but de l’opération de l’opération de formatage de faire afficher la valeur d’une variable à l’intérieur d’une chaine de caractères. Pour cela, on dispose de trois principales méthodes.

- l'utilisation de l'opérateur de concaténation "+ "

108 - l'utilisation de l’opérateur de formatage "%" %

- l'utilisation de la fonction format "{}".format()

Nous passerons en revue chacune de ces trois méthodes avec des exemples d’application à l’appui.

2.1.11.1. Formatage avec l’opérateur de concaténation "+"

Soit les variables nom, age poids, taille définies comme suit : nom="Julien"

age =25 poids=75 taille=1.70

Nous souhaitons afficher le message suivant : "Julien est âgé de 25 ans. Il pèse 75 kilos et mesure 1.70 m."

Pour constituer une telle chaîne, on utilise la concaténation suivante :

ch=nom + " " + "est âgé de" + " " + str(age)+ " " + "ans." + " " + "Il pèse" + " " + str(poids) + " " + "kilos et mesure" + " " + str(taille)+ " " + "m."

print(ch) # renvoie Julien est âgé de 25 ans. Il pèse 75 kilos et mesure 1.7 m.

On peut faire un certain nombre de remarque sur cette opération de formatage.

D’abord, les variables numériques (age, poids, taille) ont été toutes d’abord converties en variables caractère en utilisant la fonction str(). Car il n’est pas possible de concaténer une valeur numérique et une chaine sans cette transformation préalable. Cette opération de conversion n’est toutefois pas nécessaire pour la variable nom qui est déjà en caractères.

Ensuite les éléments qui doivent constituer la phrase à afficher sont associées en utilisant l’opérateur de concaténation +. Remarquons également l’ajout des caractères espaces afin d’aérer la phrase sinon le texte final sera tout collé et illisible.

2.1.11.2. Utilisation de l’opérateur de formatage "%" %

L’exemple ci-dessous montre les différentes utilisations de l’opérateur de formatage "%" % pour afficher la valeur d’une variable à l’intérieur d’une chaîne.

Soit les variables nom, age poids, taille définies comme suit : nom="Julien"

age =25 poids=75 taille=1.70

109 Nous souhaitons afficher le message suivant : "Julien est âgé de 25 ans. Il pèse 75 kilos et mesure 1.70 m." en utilisant l’opérateur de formatage "%" %. Alors on a : ch="%s est âgé de %i ans. Il pèse %.0f kilos et mesure %.2f m." %(nom, age, poids, taille)

print(ch) # renvoie Julien est âgé de 25 ans. Il pèse 75 kilos et mesure 1.70 m.

Dans cette méthode de formatage, l’ensemble du texte est spécifiée dans un guillemet unique.

Ensuite, on met l’opérateur de formatage % là où la valeur doit apparaître tout en indiquant le type de la variable. Par exemple %s indique que la valeur à faire à ce niveau est de type string (s). %i signifie une valeur entière (integer), %.0f signifie float avec 0 chiffre après la virgule et

%.2f signifie float avec 2 chiffres après la virgule (on distingue plusieurs autres types de format : ex : %d qui signifie valeur décimal).

Enfin, pour le deuxième opérateur % spécifié à l’extérieur des guillemets, on doit y indiquer les noms des variables par ordre d’apparition dans la chaine. La variable nom est la première à faire apparaitre. Elle se situe au niveau de %s. la variable age se situera au niveau de %i, etc…

Les noms des variables sont indiqués entre parenthèses lorsqu’il y en a plusieurs. Mais cela n’est pas nécessaire lorsqu’il s’agit d’une seule variable.

2.1.11.3. Utilisation de la fonction format()

La fonction format() est une spécification améliorée de l’opérateur de formatage "%".

L’exemple ci-dessous illustre son utilisation.

Soit les variables nom, age poids, taille définies comme suit : nom="Julien"

age =25 poids=75 taille=1.70

Nous souhaitons afficher le message suivant : "Julien est âgé de 25 ans. Il pèse 75 kilos et mesure 1.70 m." en utilisant la fonction format(). Alors on a :

ch="{0} est âgé de {1} ans. Il pèse {2} kilos et mesure {3}

m.".format(nom, age, poids, taille)

print(ch) # renvoie Julien est âgé de 25 ans. Il pèse 75 kilos et mesure 1.70 m.

Dans cette méthode de formatage, l’opérateur %type de la précédente méthode est remplacé par des accolades en y indiquant l’indice correspondant à la liste des variables indiquée à l’extérieur des guillemets. Les accolades indiquent là où les valeurs doivent être affichées et les indices les variables correspondant. En effet l’indice 0 correspond à la variable nom dans la liste de variables indiquée dans format(nom, age, poids, taille). {1} correspond à la variable age, ainsi de suite.

110 Nb : On pouvait aussi remplacer les indices 0, 1, …, par des noms de valeurs comme suit :

ch="{vNom} est âgé de {vAge} ans. Il pèse {vPoids} kilos et mesure {vTaille} m.".format(vNom=nom, vAge=age, vPoids=poids, vTaille=taille) print(ch) # renvoie Julien est âgé de 25 ans. Il pèse 75 kilos et mesure 1.70 m.

2.1.11.4. Formatage de valeurs indicées et création de variables indicées

Il arrive très souvent que dans l'utilisation d'une boucle « for » ou « while », on génère des valeurs ou des variables indicées. Pour le cas des valeurs indicées, on veut simplement les afficher et pour le cas des variables indicées, on veut les assigner des valeurs. Les deux exemples ci-dessous illustrent la mise en œuvre de ces deux types de cas.

Formatage de valeurs indicées

On souhaite par exemple afficher les chaînes de caractères indicées comme suit : value1, value2,..., value10. On peut simplement utiliser les trois méthodes précédemment discutées à l’intérieur d’une boucle. Voir exemple ci-dessous :

listVal=list(range(1,11)) # Création d'un liste de valeur allant de 1 à 10

# Création de valeurs formattée for v in listVal :

v1= "value%s"%v # méthode1: opérateur % print(v1)

v2= "value{0}".format(v) # méthode2: opérateur format() print(v2)

v3= "value"+str(v) # méthode3: opérateur +str() print(v3)

Les valeurs générées ci-dessus peuvent ensuite être assignées à des variables pour être utilisées dans le reste du programme.

Cependant, il arrive qu'on veuille générer plutôt des variables auxquelles on va assigner des valeurs quelconques. Pour cela, on combine les méthodes présentées avec la fonction globals (voir ci-dessous).

Formatage de variables indicées

On veut créer 10 variables nommée var1, var2,..., var10 et les assigner une valeur quelconque ( ex:100). Alors on a:

listVal=list(range(1,11)) # Création d'un liste de valeur allant de 1 à 10

# Création de valeurs formattée for v in listVal :

globals()["var%s"%v]=100 # Utilisation de l’opérateur %

111 Les 10 variables sont créées. On peut simplement afficher le contenu de n'importe quel variable en faisant print(). Ex :

print(var5)

NB : Il faut remarquer que ces créations de variables indicées sont faites à l'image de la création des valeurs indicées avec l'opérateur % en ajoutant juste la fonction global()[ ]. Il est possible aussi d'utiliser la fonction locals().

Pour plus de détails sur le traitement des chaines de caractères consulter la page : http://www.tutorialspoint.com/python/python_strings.htm

2.1.12. Utilisation de l’opérateur antislash \ : mise en forme de la