Files

Les f-strings

L'activité consiste en un TD comprenant un cours dirigé et des exercices relatifs aux f-strings en Python.

Pré-requis

Avoir effectué l'activité sur les fonctions

Consignes

  1. Télécharger le fichier TD.ipynb,
  2. Se rendre sur Basthon,
  3. Ouvrir le fichier TD.ipynb téléchargé,
  4. Suivre le déroulé du TD, les réponses sont à mettre directement dans votre fichier,
  5. À la fin de la séance, n'oubliez pas de sauvegarder votre fichier sur votre clé USB ou espace personnel.

Mémo — Les f-strings

Pourquoi les f-strings ?

Jusqu'ici, pour afficher une variable dans une phrase, on utilisait la concaténation ou la virgule dans print() :

prenom = "Alice"
age = 17

# Méthode 1 : concaténation (fastidieuse)
print("Bonjour " + prenom + ", tu as " + str(age) + " ans.")

# Méthode 2 : virgule dans print (peu flexible)
print("Bonjour", prenom, ", tu as", age, "ans.")

Les f-strings (introduites en Python 3.6) permettent d'écrire cela de façon bien plus lisible :

print(f"Bonjour {prenom}, tu as {age} ans.")
# → Bonjour Alice, tu as 17 ans.

Syntaxe de base

Une f-string est une chaîne de caractères précédée de la lettre f. Les expressions entre accolades {} sont évaluées et insérées dans la chaîne.

nom   = "Bob"
score = 142

message = f"Le joueur {nom} a obtenu {score} points."
print(message)
# → Le joueur Bob a obtenu 142 points.

On peut mettre n'importe quelle expression entre les accolades :

a = 5
b = 3
print(f"{a} + {b} = {a + b}")   # → 5 + 3 = 8
print(f"Le double de {a} : {a * 2}")  # → Le double de 5 : 10
print(f"Est-ce que {a} > {b} ? {a > b}")  # → Est-ce que 5 > 3 ? True

Appel de fonctions dans une f-string

prenom = "alice"
print(f"Bonjour {prenom.upper()} !")   # → Bonjour ALICE !
print(f"Longueur : {len(prenom)}")     # → Longueur : 5

Formatage des nombres

C'est l'un des points les plus utiles des f-strings. On ajoute un format après un : dans les accolades.

Nombres décimaux — précision

pi = 3.14159265

print(f"{pi}")        # → 3.14159265   (pas de format)
print(f"{pi:.2f}")    # → 3.14         (2 chiffres après la virgule)
print(f"{pi:.4f}")    # → 3.1416       (4 chiffres après la virgule)
print(f"{pi:.0f}")    # → 3            (0 chiffres, arrondi)

Largeur et alignement

nom = "Alice"

print(f"|{nom:<10}|")   # → |Alice     |   (aligné à gauche, largeur 10)
print(f"|{nom:>10}|")   # → |     Alice|   (aligné à droite)
print(f"|{nom:^10}|")   # → |  Alice   |   (centré)

Nombres entiers — remplissage avec des zéros

numero = 7
print(f"Joueur n°{numero:03d}")   # → Joueur n°007

Combinaison : largeur ET précision

temperature = 18.5
print(f"Température : {temperature:6.1f} °C")   # → Température :   18.5 °C

Tableau récapitulatif des formats

Format Signification Exemple Résultat
:.2f 2 décimales f"{3.14159:.2f}" 3.14
:d Entier f"{42:d}" 42
:05d Entier, 5 chiffres, zéros f"{7:05d}" 00007
:<10 Aligné gauche, 10 chars f"{'a':<10}" a
:>10 Aligné droite, 10 chars f"{'a':>10}" a
:^10 Centré, 10 chars f"{'a':^10}" a

Exemple complet : tableau de résultats

resultats = [
    ("Alice",  17.5, 1),
    ("Bob",    14.0, 2),
    ("Carla",  15.75, 3),
]

print(f"{'Nom':<10} {'Note':>6} {'Rang':>5}")
print("-" * 25)
for nom, note, rang in resultats:
    print(f"{nom:<10} {note:>6.2f} {rang:>5}")

Affiche :

Nom         Note  Rang
-------------------------
Alice       17.50     1
Bob         14.00     2
Carla       15.75     3

Erreurs fréquentes

# ERREUR : oublier le f devant la chaîne
prenom = "Alice"
print("{prenom}")      # → {prenom}   (littéral, pas de substitution !)
print(f"{prenom}")     # → Alice      (correct)

# ERREUR : accolades sans contenu valide
print(f"{}")           # SyntaxError

# ERREUR : mettre des guillemets identiques à l'intérieur
# print(f"{"Alice"}")  # SyntaxError — utiliser des guillemets différents
print(f"{'Alice'}")    # → Alice   (guillemets simples à l'intérieur)

Pour aller plus loin

Une fois le TD fini et validé, vous pouvez effectuer l'activité suivante