Structures Conditionnelles et Boucles
Introduction : Le Cœur de la Logique Programmatique
Bienvenue dans cette leçon dédiée aux structures conditionnelles et aux boucles, deux piliers fondamentaux de la programmation, indispensables pour tout développeur souhaitant maîtriser le développement avancé avec Python. En tant qu'architectes logiciels, notre capacité à prendre des décisions au sein de nos programmes et à automatiser des tâches répétitives est ce qui distingue un script simple d'une application robuste et intelligente.
Les structures conditionnelles (ou instructions de branchement) permettent à votre programme de prendre des décisions basées sur des conditions spécifiques. C'est le "si ceci, alors cela" de votre code. Sans elles, un programme exécuterait toujours la même séquence d'instructions, quel que soit le contexte.
Les boucles (ou instructions itératives), quant à elles, confèrent à votre programme la capacité d'exécuter des blocs de code de manière répétée. Elles sont essentielles pour traiter des collections de données, automatiser des processus ou attendre qu'une certaine condition soit remplie.
La maîtrise de ces concepts vous permettra de créer des applications dynamiques, réactives et efficaces. Plongeons dans les détails avec Python.
1. Les Structures Conditionnelles : La Prise de Décision
Les structures conditionnelles sont le mécanisme par lequel un programme peut choisir quel chemin d'exécution suivre en fonction de la validité (vraie ou fausse) d'une expression. En Python, les mots-clés principaux sont if, elif (else if), et else.
1.1. L'Instruction if
L'instruction if est la plus simple des structures conditionnelles. Elle exécute un bloc de code seulement si une condition spécifiée est vraie.
-
Syntaxe générale :
if condition: # Bloc de code à exécuter si la condition est vraie # Notez l'indentation (4 espaces ou 1 tabulation) -
Explication :
condition: Toute expression qui peut être évaluée commeTrueouFalse(un booléen).:: Le deux-points marque la fin de la ligneifet indique que le bloc indenté suivant appartient à cette condition.- Indentation : C'est crucial en Python ! L'indentation définit les blocs de code. Toutes les lignes du même bloc doivent avoir la même indentation.
-
Exemple : Vérifier si un nombre est positif
nombre = 10 if nombre > 0: print("Le nombre est positif.") print("Fin de la vérification.")- Explication du code : Si
nombre(qui est 10) est strictement supérieur à 0, la conditionnombre > 0estTrue. Le message "Le nombre est positif." est alors affiché. La ligne "Fin de la vérification." est toujours exécutée car elle n'est pas indentée sous leif.
- Explication du code : Si
1.2. L'Instruction if-else
L'instruction if-else permet d'exécuter un bloc de code si la condition est vraie, et un autre bloc de code si la condition est fausse. Cela garantit qu'un des deux chemins sera toujours pris.
-
Syntaxe générale :
if condition: # Bloc de code si la condition est vraie else: # Bloc de code si la condition est fausse -
Exemple : Vérifier si un nombre est pair ou impair
nombre = 7 if nombre % 2 == 0: print(f"{nombre} est un nombre pair.") else: print(f"{nombre} est un nombre impair.")- Explication du code : L'opérateur
%(modulo) renvoie le reste d'une division. Sinombre % 2est égal à 0, le nombre est pair. Dans cet exemple,7 % 2est 1, donc la condition7 % 2 == 0estFalse, et le blocelseest exécuté.
- Explication du code : L'opérateur
1.3. L'Instruction if-elif-else
Pour les scénarios où il y a plus de deux chemins d'exécution possibles, on utilise if-elif-else. Python évalue les conditions séquentiellement de haut en bas. Dès qu'une condition est True, le bloc de code correspondant est exécuté, et le reste de la structure if-elif-else est ignoré. Si aucune des conditions if ou elif n'est vraie, le bloc else (s'il est présent) est exécuté.
-
Syntaxe générale :
if condition1: # Bloc de code si condition1 est vraie elif condition2: # Bloc de code si condition1 est fausse ET condition2 est vraie elif condition3: # Bloc de code si condition1 & condition2 sont fausses ET condition3 est vraie else: # Bloc de code si toutes les conditions précédentes sont fausses -
Exemple : Attribuer une note alphabétique
score = 85 if score >= 90: note = "A" elif score >= 80: note = "B" elif score >= 70: note = "C" elif score >= 60: note = "D" else: note = "F" print(f"Pour un score de {score}, la note est : {note}")- Explication du code : Ici,
scoreest 85.score >= 90(85 >= 90) estFalse.elif score >= 80(85 >= 80) estTrue. Le bloc sous ceelifest exécuté (note = "B"), et le reste de la structure est ignoré.
- Explication du code : Ici,
1.4. Opérateurs de Comparaison et Logiques
Les conditions sont construites à l'aide d'opérateurs :
-
Opérateurs de Comparaison :
==: Égal à!=: Différent de>: Strictement supérieur à<: Strictement inférieur à>=: Supérieur ou égal à<=: Inférieur ou égal à
-
Opérateurs Logiques : Utilisés pour combiner plusieurs conditions.
and: Vrai si toutes les conditions sont vraies.or: Vrai si au moins une des conditions est vraie.not: Inverse la valeur de vérité d'une condition.
-
Exemple avec opérateurs logiques :
age = 25 revenu = 50000 if age >= 18 and revenu >= 30000: print("Eligible pour un prêt bancaire.") else: print("Non eligible pour le prêt bancaire.") est_majeur = (age >= 18) print(f"L'utilisateur n'est PAS majeur : {not est_majeur}")- Explication du code : La première condition combine deux tests avec
and. Siageest 25 etrevenuest 50000, les deux sous-conditions sont vraies, donc la condition globale est vraie.not est_majeurinverse la valeur booléenne deest_majeur.
- Explication du code : La première condition combine deux tests avec
2. Les Boucles : L'Automatisation des Répétitions
Les boucles permettent d'exécuter un bloc de code plusieurs fois. Elles sont essentielles pour l'automatisation, le traitement de collections de données, et l'itération sur des séquences.
2.1. La Boucle for
La boucle for est utilisée pour itérer sur une séquence (comme une liste, une chaîne de caractères, un tuple, un dictionnaire, ou un range). Elle exécute le bloc de code pour chaque élément de la séquence.
-
Syntaxe générale :
for element in sequence: # Bloc de code à exécuter pour chaque 'element' de la 'sequence' -
La fonction
range(): Souvent utilisée avecforpour générer une séquence de nombres.range(fin): Génère des nombres de 0 jusqu'àfin-1.range(début, fin): Génère des nombres dedébutjusqu'àfin-1.range(début, fin, pas): Génère des nombres dedébutjusqu'àfin-1, en incrémentant depas.
-
Exemple : Itérer sur une liste et avec
range()fruits = ["pomme", "banane", "cerise"] print("--- Fruits de la liste ---") for fruit in fruits: print(f"J'aime les {fruit}.") print("\n--- Compte à rebours ---") for i in range(5, 0, -1): # Compte de 5 à 1 (pas de -1) print(i) print("Décollage !") print("\n--- Carrés des 5 premiers nombres ---") for nombre in range(5): # 0, 1, 2, 3, 4 print(f"Le carré de {nombre} est {nombre**2}")- Explication du code :
- La première boucle parcourt chaque
fruitdans la listefruitset affiche un message personnalisé. - La deuxième boucle utilise
range(5, 0, -1)pour compter à rebours de 5 à 1. Le troisième argument-1indique un pas de décrémentation. - La troisième boucle utilise
range(5)pour générer des nombres de 0 à 4 et calcule leurs carrés.
- La première boucle parcourt chaque
- Explication du code :
2.2. La Boucle while
La boucle while exécute un bloc de code tant qu'une condition spécifiée reste vraie. Elle est utilisée lorsque vous ne savez pas à l'avance combien de fois la boucle doit s'exécuter, mais que vous avez une condition de sortie claire.
-
Syntaxe générale :
while condition: # Bloc de code à exécuter tant que la condition est vraie # Assurez-vous que la condition devienne fausse à un moment donné, # sinon vous aurez une boucle infinie ! -
Exemple : Compteur simple et boucle contrôlée par l'utilisateur
compteur = 0 print("--- Compteur While ---") while compteur < 3: print(f"Compteur : {compteur}") compteur += 1 # Incrémentation pour éviter une boucle infinie print("\n--- Boucle de saisie utilisateur ---") mot_de_passe = "" while mot_de_passe != "secret": mot_de_passe = input("Entrez le mot de passe : ") if mot_de_passe != "secret": print("Mot de passe incorrect. Réessayez.") print("Mot de passe correct ! Accès accordé.")-
Explication du code :
- La première boucle
whilecontinue tant quecompteurest inférieur à 3.compteur += 1est essentiel pour incrémentercompteur, le rendant éventuellement 3, ce qui rendra la conditionFalseet mettra fin à la boucle. - La deuxième boucle continue de demander un mot de passe à l'utilisateur tant que celui-ci n'entre pas "secret". Dès que "secret" est entré, la condition
mot_de_passe != "secret"devientFalse, et la boucle se termine.
- La première boucle
-
Attention aux boucles infinies ! Si la condition de la boucle
whilene devient jamais fausse, la boucle s'exécutera indéfiniment, bloquant votre programme. Assurez-vous toujours qu'une variable ou un état change à l'intérieur de la boucle pour garantir la terminaison.
-
2.3. Contrôle de Flux dans les Boucles : break et continue
Parfois, nous avons besoin d'un contrôle plus fin sur l'exécution des boucles. Python fournit deux instructions pour cela : break et continue.
-
break:- Utilisé pour terminer immédiatement la boucle la plus proche qui l'englobe.
- L'exécution du programme reprend à l'instruction qui suit immédiatement la boucle.
-
continue:- Utilisé pour sauter l'itération courante de la boucle.
- L'exécution passe immédiatement à l'itération suivante de la boucle, en réévaluant la condition pour une boucle
whileou en passant à l'élément suivant pour une bouclefor.
-
Exemple avec
breaketcontinue:nombres = [1, 2, 3, -1, 5, 0, 8, -5, 10] print("--- Exemple avec break ---") for num in nombres: if num < 0: print(f"Nombre négatif détecté : {num}. Arrêt de la boucle.") break # Sort de la boucle print(f"Traitement du nombre : {num}") print("\n--- Exemple avec continue ---") for num in nombres: if num == 0: print(f"Nombre zéro détecté : {num}. Saut de cette itération.") continue # Passe à l'itération suivante if num < 0: print(f"Nombre négatif détecté : {num}. Ce nombre sera ignoré.") continue print(f"Le double de {num} est {num * 2}")- Explication du code :
- Dans le premier exemple (
break), dès que le nombre-1est rencontré, le message est affiché, etbreaktermine la bouclefor. Les nombres après-1ne sont pas traités. - Dans le deuxième exemple (
continue), lorsque0est rencontré, le message est affiché, etcontinuefait que le reste du bloc de la boucle pour cette itération est ignoré. L'exécution passe directement au nombre suivant. De même pour les nombres négatifs. Seuls les nombres positifs et non-nuls sont doublés.
- Dans le premier exemple (
- Explication du code :
Conclusion : Bâtir des Programmes Intelligents
Vous avez maintenant une compréhension solide des structures conditionnelles (if, elif, else) et des boucles (for, while), ainsi que des contrôles de flux (break, continue) en Python.
- Les structures conditionnelles sont votre boîte à outils pour permettre à vos programmes de prendre des décisions et de réagir à différentes situations. Elles sont cruciales pour la logique métier et l'interactivité.
- Les boucles vous offrent le pouvoir de l'automatisation, vous permettant de traiter de grandes quantités de données ou de répéter des actions jusqu'à ce qu'une condition soit remplie.
Ces deux concepts sont le ciment de la logique de programmation. Sans eux, un programme ne serait qu'une séquence linéaire d'instructions prévisibles. Avec eux, vous pouvez construire des applications complexes, dynamiques et véritablement intelligentes.
Votre prochaine étape est la pratique ! Essayez d'écrire de petits programmes qui utilisent ces concepts :
- Un jeu simple où l'utilisateur doit deviner un nombre.
- Un script qui analyse une liste de mots et compte les voyelles.
- Un programme qui calcule la moyenne d'une série de nombres entrés par l'utilisateur, s'arrêtant lorsqu'il entre "q".
Plus vous pratiquerez, plus ces concepts deviendront intuitifs et vous serez en mesure de les appliquer efficacement dans vos projets de développement Python avancés.