Aller au contenu

Structures de contrôle#

essentiel

if / elif / else#

if age < 18:
    categorie = "mineur"
elif age < 65:
    categorie = "adulte"
else:
    categorie = "senior"

Expression conditionnelle (ternaire)#

statut = "majeur" if age >= 18 else "mineur"

while#

n = 0
while n < 5:
    print(n)
    n += 1
Clause else sur boucles for / while

Une clause else sur une boucle s'exécute uniquement si la boucle se termine naturellement, c'est-à-dire sans avoir rencontré de break :

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            break
    else:
        print(f"{n} est un nombre premier")

Opérateur d'affectation Walrus := (≥ 3.8)#

L'opérateur walrus := permet d'affecter une valeur à une variable tout en l'évaluant dans une expression (très pratique pour éviter les doubles calculs ou les répétitions) :

# Dans une condition :
if (n := len(valeurs)) > 10:
    print(f"Liste trop grande ({n} éléments)")

# Dans une boucle de lecture :
while (ligne := fichier.readline()):
    print(ligne.strip())

for#

for x in range(5):          # 0 1 2 3 4
    print(x)

for x in range(2, 10, 2):    # 2 4 6 8
    ...

for i, valeur in enumerate(["a", "b"]):   # index + valeur
    ...

for a, b in zip([1, 2], ["x", "y"]):       # parcours parallèle
    ...

break / continue / pass#

for x in range(10):
    if x == 5:
        break        # sort de la boucle
    if x % 2 == 0:
        continue     # passe à l'itération suivante
    pass               # ne fait rien (placeholder)

match / case#

Voir Aide-mémoire — Syntaxe.

match point:
    case (0, 0):
        print("origine")
    case (x, 0):
        print(f"sur l'axe X à {x}")
    case (x, y) if x == y:
        print("sur la diagonale")
    case _:
        print("ailleurs")

Boucles imbriquées et labels#

Python n'a pas de labels de boucle ; utiliser un drapeau ou une fonction avec return pour sortir de boucles imbriquées.

def recherche(matrice, cible):
    for ligne in matrice:
        for val in ligne:
            if val == cible:
                return True
    return False