Chaînes formatées

3.2 Chaînes formatées

Objectifs d'apprentissage

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

  • Utiliser des f-strings pour simplifier la sortie de plusieurs valeurs.
  • Formater des nombres avec des zéros initiaux et une précision fixe.

F-strings

Un littéral de chaîne formatée (formatted string literal) (ou f-string) est un littéral de chaîne préfixé par "f" ou "F". Un champ de remplacement (replacement field) est une expression entre accolades ({}) à l'intérieur d'une f-string. Ex. : La chaîne f"Good morning, {first} {last}!" comporte deux champs de remplacement : un pour un prénom et un pour un nom de famille. Les f-strings offrent un moyen pratique de combiner plusieurs valeurs en une seule chaîne.

Faites le point

Afficher une f-string

Concepts en pratique

F-strings de base

1.
Quelle est la sortie du code suivant ?
animal = "dog"
says = "bark"
print(f"My {animal} says {says} {says} {says}")
  1. My dog bark bark bark bark
  2. My dog says bark bark bark
  3. Error
2.
Quelle est la sortie du code suivant ?
temp = "hot"
food = "potato"
print("{temp} {food}")
  1. {temp} {food}
  2. hot potato
  3. Error
3.
Comment le code suivant peut-il être réécrit en utilisant une f-string ?
print(x, "+", y, "=", x + y)
  1. print(f"x + y = {x+y}")
  2. print(f"{x + y} = {x + y}")
  3. print(f"{x} + {y} = {x+y}")

Formatage des nombres

Les programmes ont souvent besoin d'afficher des nombres dans un format spécifique. Ex. : Lors de l'affichage de l'heure, les minutes sont formatées sous forme d'entiers à deux chiffres. Si l'heure est 9 et la minute est 5, l'heure est alors « 9:05 » (et non « 9:5 »).

Dans une f-string, un champ de remplacement peut inclure un spécificateur de format introduit par deux-points. Un spécificateur de format (format specifier) définit la manière dont une valeur doit être formatée pour l'affichage. Ex. : Dans la chaîne f"{hour}:{minute:02d}", le spécificateur de format pour minute est 02d.

Format Description Exemple Résultat

d

Entier décimal (format d'entier par défaut).

f"{12345678:d}"

'12345678'

,d

Entier décimal, avec des virgules comme séparateurs.

f"{12345678:,d}"

'12,345,678'

10d

Entier décimal, d'au moins 10 caractères de large.

f"{12345678:10d}"

'  12345678'

010d

Entier décimal, d'au moins 10 caractères de large, avec des zéros initiaux.

f"{12345678:010d}"

'0012345678'

f

Nombre à virgule fixe (la valeur par défaut est de 6 décimales).

f"{math.pi:f}"

'3.141593'

.4f

Nombre à virgule fixe, arrondi à 4 décimales.

f"{math.pi:.4f}"

'3.1416'

8.4f

Nombre à virgule fixe, arrondi à 4 décimales, d'au moins 8 caractères de large.

f"{math.pi:8.4f}"

'  3.1416'

08.4f

Nombre à virgule fixe, arrondi à 4 décimales, d'au moins 8 caractères de large, avec des zéros initiaux.

f"{math.pi:08.4f}"

'003.1416'

Tableau 3.3 Exemples de spécificateurs de format. Le tableau présente les manières courantes de formater des nombres. De nombreuses autres options de formatage sont disponibles et décrites dans la documentation Python sur le mini-langage de spécification de format.

Concepts en pratique

Formatage des nombres

4.
Quelle f-string formate une date sous la forme MM/DD/YYYY ?
  1. f"{month:02d}/{day:02d}/{year}"
  2. f"{month:2d}/{day:2d}/{year}"
  3. f"{month}/{day}/{year}"
5.
Quelle instruction affiche la variable money arrondie à deux décimales ?
  1. print(f"{money:2d}")
  2. print(f"{money:2f}")
  3. print(f"{money:.2f}")
6.
Quel spécificateur de format affiche un nombre à virgule flottante avec des virgules comme séparateurs et arrondi à deux décimales ?
  1. .2,f
  2. ,.2f
  3. ,d.2f

À vous d'essayer

Mad lib (f-string)

Un mad lib est une histoire amusante qui utilise des mots fournis par un utilisateur. Le mad lib suivant est basé sur quatre mots (saisie de l'utilisateur en gras) :

    Enter a name: Buster
    Enter a noun: dog
    Enter an adjective: super
    Verb ending in -ing: swimming
    
    Buster, the super dog, likes to go swimming.

La plus grande partie du code de ce mad lib est déjà écrite. Complétez le code ci-dessous en écrivant la f-string.

À vous d'essayer

Calculateur de salaire

Vous venez de décrocher un emploi à temps partiel et vous souhaitez calculer combien d'argent vous allez gagner. Écrivez un programme qui demande l'heure à laquelle vous commencez à travailler, l'heure à laquelle vous vous arrêtez et votre taux horaire (exemple de saisie en gras) :

    Starting hour: 9
    Starting minute: 30
    Stopping hour: 11
    Stopping minute: 0
    Hourly rate: 15

En fonction des données saisies par l'utilisateur, votre programme doit calculer et afficher les résultats suivants :

    Worked 9:30 to 11:00
    Total hours: 1.5
    Payment: $22.50

Pour cet exercice, vous devez écrire du code qui (1) calcule le salaire total et (2) formate les trois lignes de sortie. Utilisez des f-strings et des spécificateurs de format pour afficher les minutes sur deux chiffres, une décimale pour les heures et deux décimales pour le montant du paiement. Le code de saisie est fourni comme point de départ.

Supposez l'utilisation d'une horloge sur 24 heures. Ex. : 16:15 est utilisé au lieu de 4:15pm.