Instructions Conditionnelles en Python

PythonBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à contrôler le flux de vos programmes Python à l'aide d'instructions conditionnelles. Nous commencerons par comprendre le concept d'exécution séquentielle des programmes, puis nous introduirons la logique conditionnelle, qui permet aux programmes de prendre des décisions.

Vous implémenterez une logique à branche unique et à double branche en utilisant les instructions if et if-else, et explorerez la logique à branches multiples avec if-elif-else. Le laboratoire couvrira également les instructions if imbriquées, l'instruction pass, et introduira l'instruction match-case disponible dans Python 3.10 et les versions ultérieures. À la fin de ce laboratoire, vous serez en mesure d'écrire du code Python qui exécute différents blocs d'instructions en fonction de conditions spécifiques.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 100%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

Comprendre le Flux Séquentiel et Introduire la Logique Conditionnelle

Dans cette étape, nous allons explorer le concept de flux séquentiel en programmation et introduire la logique conditionnelle, qui permet aux programmes de prendre des décisions.

Le flux séquentiel est le type d'exécution de programme le plus basique. Les instructions sont exécutées les unes après les autres, de haut en bas.

L'environnement de laboratoire a déjà créé pour vous un fichier nommé sequential.py dans le répertoire ~/project. Localisez ce fichier dans l'explorateur de fichiers du WebIDE sur le panneau de gauche et ouvrez-le.

Ajoutez le code suivant à sequential.py :

print("First instruction")
print("Second instruction")
print("Third instruction")

Enregistrez le fichier. Pour exécuter le script, ouvrez le terminal intégré dans le WebIDE et exécutez la commande suivante :

python ~/project/sequential.py

Vous verrez la sortie imprimée dans l'ordre exact où les instructions print apparaissent dans le script :

First instruction
Second instruction
Third instruction

Ceci démontre le flux séquentiel. Cependant, les programmes doivent souvent se comporter différemment en fonction de certaines conditions. C'est là qu'intervient la logique conditionnelle. L'instruction conditionnelle la plus fondamentale en Python est l'instruction if, qui exécute un bloc de code uniquement si une condition spécifiée est vraie.

La syntaxe de base d'une instruction if est la suivante :

if condition:
    ## Code à exécuter si la condition est vraie
    ## Ce bloc doit être indenté

Maintenant, remplacez le contenu de sequential.py par le code suivant pour inclure une instruction if :

x = 10

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Enregistrez le fichier et exécutez-le à nouveau :

python ~/project/sequential.py

La sortie sera :

Before the if statement
x is greater than 5
After the if statement

La condition x > 5 est vraie, donc le bloc de code indenté à l'intérieur de l'instruction if est exécuté.

Voyons maintenant ce qui se passe lorsque la condition est fausse. Modifiez sequential.py en changeant la valeur de x à 3 :

x = 3

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Enregistrez le fichier et exécutez-le :

python ~/project/sequential.py

La sortie sera :

Before the if statement
After the if statement

Cette fois, la condition x > 5 est fausse, donc le bloc de code à l'intérieur de l'instruction if est ignoré. Cet exemple simple illustre comment l'instruction if introduit la prise de décision dans nos programmes.

Implémenter la Logique à Branche Unique et Double avec if et if-else

Dans cette étape, nous allons nous concentrer sur l'implémentation d'une logique à branche unique et double en utilisant les instructions if et if-else.

L'instruction if permet une exécution à branche unique. Utilisons le fichier branching.py qui a été préparé pour vous. Ouvrez branching.py depuis l'explorateur de fichiers.

Ajoutez le code suivant pour démontrer une instruction if à branche unique :

score = 85

if score >= 70:
    print("Congratulations! You passed.")

print("End of program.")

Enregistrez le fichier et exécutez-le depuis le terminal :

python ~/project/branching.py

La sortie sera :

Congratulations! You passed.
End of program.

Puisque score est 85, la condition est vraie, et le message de félicitations est imprimé.

Bien que if soit utile, nous avons souvent besoin d'exécuter un bloc de code différent lorsque la condition est fausse. C'est là qu'intervient l'instruction if-else, offrant une logique à double branche.

La syntaxe d'une instruction if-else est la suivante :

if condition:
    ## Code à exécuter si la condition est vraie
else:
    ## Code à exécuter si la condition est fausse

Modifions branching.py pour utiliser une instruction if-else. Remplacez le contenu actuel par ce qui suit :

score = 85

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Enregistrez et exécutez le script. Avec score à 85, le bloc if s'exécute :

Congratulations! You passed.
End of program.

Maintenant, pour tester le bloc else, modifiez le score à 65 dans branching.py :

score = 65

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Enregistrez le fichier et exécutez-le à nouveau :

python ~/project/branching.py

La sortie sera maintenant :

Keep trying. You can do better.
End of program.

Puisque score est 65, la condition if est fausse, et le code dans le bloc else est exécuté. L'instruction if-else est essentielle pour gérer deux résultats possibles.

Implémenter la Logique Multi-Branche avec if-elif-else

Dans cette étape, nous allons apprendre à gérer des situations comportant plus de deux résultats possibles en utilisant l'instruction if-elif-else, qui fournit une logique à branches multiples.

La structure if-elif-else vérifie les conditions séquentiellement. Si la condition if est fausse, elle vérifie la première condition elif (abréviation de "else if"), et ainsi de suite. Si aucune condition n'est vraie, le bloc else est exécuté.

La syntaxe de base est la suivante :

if condition1:
    ## S'exécute si condition1 est vraie
elif condition2:
    ## S'exécute si condition1 est fausse et condition2 est vraie
else:
    ## S'exécute si toutes les conditions précédentes sont fausses

Ouvrez le fichier multibranch.py dans le WebIDE. Nous allons écrire un script pour déterminer une note littérale basée sur un score numérique. Ajoutez le code suivant :

score = 88

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Enregistrez le fichier et exécutez-le depuis le terminal :

python ~/project/multibranch.py

La sortie sera :

Grade: B
Grading complete.

Le programme vérifie score >= 90 (faux), puis score >= 80 (vrai), imprime "Grade: B", et saute le reste de la chaîne.

Maintenant, testons le bloc else. Modifiez multibranch.py pour définir le score à 55 :

score = 55

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Enregistrez et exécutez le script :

python ~/project/multibranch.py

La sortie sera :

Grade: F
Grading complete.

Enfin, pour préparer la vérification, changez le score à 75 dans multibranch.py :

score = 75

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Enregistrez et exécutez le script une dernière fois :

python ~/project/multibranch.py

La sortie sera :

Grade: C
Grading complete.

La structure if-elif-else est puissante pour gérer de multiples cas distincts. Rappelez-vous que seul le bloc de code correspondant à la première condition vraie est exécuté.

Explorer les Instructions if Imbriquées et l'Instruction pass

Dans cette étape, nous allons explorer les instructions if imbriquées, où une instruction if est placée à l'intérieur d'une autre, et nous apprendrons également l'instruction pass.

Les instructions if imbriquées sont utiles lorsque vous devez vérifier une condition, et si elle est vraie, vérifier une autre sous-condition.

Ouvrez le fichier nested_if.py dans le WebIDE. Ajoutez le code suivant, qui vérifie l'éligibilité au vote en fonction de l'âge et de la citoyenneté.

age = 20
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are also a citizen.")
        print("You are eligible to vote.")
    else:
        print("You are not a citizen.")
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Enregistrez le fichier et exécutez-le :

python ~/project/nested_if.py

La sortie sera :

You are old enough to vote.
You are also a citizen.
You are eligible to vote.
Voting eligibility check complete.

La condition externe (age >= 18) et la condition interne (is_citizen) sont toutes deux vraies.

Maintenant, examinons l'instruction pass. L'instruction pass est une opération nulle ; rien ne se passe lorsqu'elle est exécutée. C'est un espace réservé utile lorsqu'une instruction est syntaxiquement requise, mais que vous n'avez pas encore écrit le code pour celle-ci.

Remplacez le contenu de nested_if.py par cet exemple utilisant pass :

age = 18

if age >= 18:
    pass ## Placeholder for future code
else:
    print("You are not old enough to vote.")

print("Check complete.")

Enregistrez et exécutez le script :

python ~/project/nested_if.py

La sortie sera :

Check complete.

La condition if est vraie, donc l'instruction pass est exécutée (ne faisant rien), et le bloc else est ignoré.

Enfin, pour préparer la vérification, modifiez nested_if.py pour utiliser la logique originale mais avec un âge qui échoue au premier contrôle.

age = 16
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are eligible to vote.")
    else:
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Enregistrez et exécutez le script :

python ~/project/nested_if.py

La sortie sera :

You are not old enough to vote.
You are not eligible to vote.
Voting eligibility check complete.

Ici, la condition if externe (age >= 18) est fausse, donc le bloc else externe est exécuté, et la structure if-else interne est complètement ignorée.

Introduction de l'Instruction match-case (Python 3.10+)

Dans cette étape, nous allons explorer l'instruction match-case, une fonctionnalité introduite dans Python 3.10 pour la mise en correspondance de motifs structurels (structural pattern matching). Elle offre une alternative plus lisible aux chaînes if-elif-else pour certains scénarios.

L'instruction match-case compare une valeur à une série de motifs et exécute le bloc de code correspondant au premier motif trouvé.

La syntaxe de base est la suivante :

match value:
    case pattern1:
        ## Code pour pattern1
    case pattern2:
        ## Code pour pattern2
    case _:
        ## Code pour aucune correspondance (joker/wildcard)

Ouvrez le fichier match_case.py dans le WebIDE. Ajoutez le code suivant pour afficher le jour de la semaine en fonction d'un nombre.

day_number = 3

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Enregistrez le fichier et exécutez-le. La commande python dans cet environnement utilise par défaut une version compatible.

python ~/project/match_case.py

La sortie sera :

Wednesday
Day check complete.

La valeur 3 correspond à case 3:, donc "Wednesday" est affiché.

Maintenant, testons le cas du joker. Modifiez match_case.py pour utiliser un nombre invalide :

day_number = 10

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Enregistrez et exécutez le script :

python ~/project/match_case.py

La sortie sera :

Invalid day number
Day check complete.

Puisque 10 ne correspond à aucun cas spécifique, le joker case _: est utilisé.

Enfin, pour préparer la vérification, changez day_number à 6 dans match_case.py :

day_number = 6

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Enregistrez et exécutez le script :

python ~/project/match_case.py

La sortie sera :

Saturday
Day check complete.

L'instruction match-case peut être une manière plus propre de gérer de multiples valeurs spécifiques par rapport à une longue chaîne if-elif-else.

Résumé

Dans ce laboratoire, vous avez appris à contrôler le flux de vos programmes Python. Vous avez commencé par le flux séquentiel du programme, puis vous êtes passé à la logique conditionnelle. Vous avez implémenté une logique à branche unique avec if, une logique à double branche avec if-else, et une logique à branches multiples avec if-elif-else. Vous avez également exploré comment créer des structures de décision plus complexes avec des instructions if imbriquées et comment utiliser l'instruction pass comme espace réservé de code. Enfin, vous avez découvert l'instruction match-case comme alternative moderne pour les branchements basés sur des motifs. Vous êtes maintenant équipé pour écrire des programmes Python capables de prendre des décisions et d'exécuter différents chemins de code en fonction de conditions spécifiques.