Programmation : chapitres 5 (f-strings) et 6 (typage) — corrigent les liens morts du site
This commit is contained in:
180
programmation/chapitre_5/README.md
Normal file
180
programmation/chapitre_5/README.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# 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](../chapitre_4/)
|
||||
|
||||
## Consignes
|
||||
|
||||
1. Télécharger le fichier [TD.ipynb](./TD.ipynb),
|
||||
2. Se rendre sur [Basthon](https://notebook.basthon.fr/),
|
||||
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()`** :
|
||||
|
||||
```python
|
||||
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 :
|
||||
|
||||
```python
|
||||
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.
|
||||
|
||||
```python
|
||||
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 :
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
numero = 7
|
||||
print(f"Joueur n°{numero:03d}") # → Joueur n°007
|
||||
```
|
||||
|
||||
#### Combinaison : largeur ET précision
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
# 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](../chapitre_6/)
|
||||
Reference in New Issue
Block a user