2.3. Instructions de contrôles#

2.3.1. Le branchement conditionnel#

Il s’agit de la structure de contrôle la plus essentielle : if. Ce mot clef permet d’exécuter le bloc de code indenté dessous si la condition est remplie et sinon de passer à la suite.

Syntaxe

if <condition> :
    ...

Cette structure peut-être étendue avec d’autres tests qui ne sont exécutés que si le premier échoue.

Syntaxe

if <condition_1> :
    ...
elif <condition_2>:
    ...

Attention

Les deux exemples suivants ne sont pas équivalents.

if <condition_1>:
    ...
elif <condition_2>:
    ...
if <condition_1>:
    ...
if <condition_2>:
    ...

Le premier exemple teste si la condition_1 est vraie. Si et seulement si la condition_1 est fausse, alors la condition_2 est testée.

Le deuxième exemple teste si la condition_1 est vraie. Indépendamment du résultat du premier test, on teste si la condition_2 est vraie.

Enfin, pour générer une action par défaut, on utilise le mot clef else.

Utilisation des commentaires

Lorsque le code écrit peut sembler dûr à comprendre ou utilise une subtilité, il peut être intéressant de mettre un commentaire, soit en fin de ligne s’il est court avec ... # <mon commentaire>, soit dans la docstring de la fonction entre """.

Syntaxe

if <condition_1> :
    ...
elif <condition_2>:
    ...
else:
    ...

2.3.2. Boucle conditionnelle#

À partir de la structure de contrôle précédente, on peut imaginer répéter une action tant qu’une condition n’est pas remplie.

C’est le rôle du mot clef while qui permet de répéter le bloc d’instruction jusqu’à qu’une condition soit remplie.

Syntaxe

while <condition_1> :
    ...

Exemple

def second_carre_divisible(n: int) -> int:
    valeur_courante = n + 1
    while valeur_courante**2 % n != 0:
        valeur_courante = valeur_courante + 1
    return valeur_courante**2

2.3.3. Boucle bornée#

Lorsque la condition d’arrêt d’une boucle conditionnelle dépend d’un compteur, on peut considérer qu’on connaît à le nombre d’itérations (répétitions) de l’action à effectuer. On parle alors de boucle bornée et celle-ci s’écrit alors de la façon suivante.

Syntaxe

for variant in range(nombre_d_iterations):
    ...

Attention, la fonction range appelée avec le paramètre \(n\) renvoie les entiers de \(0\) à \(n - 1\).

Exemple

def somme_entiers(n: int) -> int:
    """
    Renvoie la somme des n premiers entiers naturels

    Args:
        n (int): le dernier entier à additionner
    Returns:
        int: la somme des entiers
    """
    somme = 0
    for entier in range(n + 1):
        somme = somme + entier
    return somme

Pour certains types de variables comme les chaînes de caractères, on peut parcourir directement les éléments de la variable.

Exemple

def compte_lettre(chaine: str) -> int:
    """
    Renvoie le nombre de lettres dans la chaine de caractère

    Args:
        chaine (str): une chaine de caractère
    Returns:
        int: le nombre de caractère
    """
    longueur = 0
    for caractere in chaine:
        longueur = longueur + encaracteretier
    return caractere

Exercices sur les instructions conditionnelles