Python : Structures de contrôle
Conditions (if/elif/else), boucles (for, while) et les compréhensions, l'écriture idiomatique de Python.
Python : Structures de contrôle
Le flux d'exécution en Python : conditions, boucles, et les compréhensions qui condensent une boucle en une expression.
# Les conditions
if, elif (else if), else. Le bloc est délimité par l'indentation.
if score > 90:
mention = "excellent"
elif score > 50:
mention = "correct"
else:
mention = "insuffisant"if score > 90: mention = "excellent"elif score > 50: mention = "correct"else: mention = "insuffisant"Python n'a pas d'opérateur ternaire à la ?:, mais une forme lisible :
statut = "adulte" if age >= 18 else "mineur"statut = "adulte" if age >= 18 else "mineur"# La boucle for
En Python, for parcourt un itérable (liste, chaîne, dict...), pas un compteur. Pas de for (i = 0; ...).
for nom in ["Alice", "Bob"]:
print(nom)
for lettre in "abc":
print(lettre) # a, b, cfor nom in ["Alice", "Bob"]: print(nom) for lettre in "abc": print(lettre) # a, b, cPour un compteur, on utilise range :
for i in range(5): # 0, 1, 2, 3, 4
print(i)
range(2, 10, 2) # de 2 à 8 par pas de 2for i in range(5): # 0, 1, 2, 3, 4 print(i) range(2, 10, 2) # de 2 à 8 par pas de 2Et enumerate quand il faut l'index et la valeur :
for i, nom in enumerate(["Alice", "Bob"]):
print(f"{i} : {nom}") # "0 : Alice", "1 : Bob"for i, nom in enumerate(["Alice", "Bob"]): print(f"{i} : {nom}") # "0 : Alice", "1 : Bob"# La boucle while
Tourne tant que la condition est vraie. break sort, continue passe à l'itération suivante.
stock = 3
while stock > 0:
print(f"reste {stock}")
stock -= 1 # pas de stock-- en Pythonstock = 3while stock > 0: print(f"reste {stock}") stock -= 1 # pas de stock-- en Python# Les compréhensions
C'est la signature de Python : construire une liste (ou un dict, un set) en une seule expression, à partir d'une boucle et d'un filtre optionnel.
# Au lieu de :
carres = []
for n in range(10):
carres.append(n * n)
# On écrit :
carres = [n * n for n in range(10)]
# Avec un filtre :
pairs = [n for n in range(10) if n % 2 == 0] # [0, 2, 4, 6, 8]
# Ça marche aussi pour les dict et les set :
carres_dict = {n: n * n for n in range(5)} # {0: 0, 1: 1, 2: 4, ...}# Au lieu de :carres = []for n in range(10): carres.append(n * n) # On écrit :carres = [n * n for n in range(10)] # Avec un filtre :pairs = [n for n in range(10) if n % 2 == 0] # [0, 2, 4, 6, 8] # Ça marche aussi pour les dict et les set :carres_dict = {n: n * n for n in range(5)} # {0: 0, 1: 1, 2: 4, ...} Une compréhension bien lisible remplace avantageusement une boucle for de 3 lignes. Mais au-delà d'une condition ou deux, repasse à une boucle classique : une compréhension illisible ne rend service à personne.
# La suite
- Les fonctions - encapsuler cette logique
- Les collections - ce que ces boucles parcourent
- Python : Introduction - le hub de la série