%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Lecture de Code - Python/Lecture de code - Python|Accueil · Lecture de code - Python]] > > | [[Code et Développement/Programmation/Lecture de Code - Python/02_variables_entrees_sorties\|← Variables, entrées, sorties]] | [[Code et Développement/Programmation/Lecture de Code - Python/04_boucle_for\|Boucle `for` →]] | > |:---|---:| %% nav-fin %% # Conditions : `if` / `elif` / `else` ## Structure ```python if condition: # exécuté si condition est vraie elif autre_condition: # exécuté si la première est fausse et celle-ci vraie else: # exécuté si toutes les conditions précédentes sont fausses ``` Un seul bloc est exécuté : le premier dont la condition est vraie. --- ## Opérateurs de comparaison | Opérateur | Signification | |---|---| | `==` | égal | | `!=` | différent | | `<` `<=` | inférieur (ou égal) | | `>` `>=` | supérieur (ou égal) | | `in` | appartient à | | `not in` | n'appartient pas à | --- ## Opérateurs logiques ```python a and b # vrai si a ET b sont vrais a or b # vrai si a OU b est vrai not a # inverse la valeur de vérité ``` --- ## Exemple — signe d'un nombre ```python n = int(input()) # entrée : -3 if n > 0: print("positif") elif n < 0: print("négatif") else: print("nul") ``` **Trace avec n = -3** : - `n > 0` → `-3 > 0` → **False** → on passe - `n < 0` → `-3 < 0` → **True** → on entre - **Sortie : `négatif`** --- ## Exemple — classification ```python note = int(input()) # entrée : 14 if note >= 16: print("Très bien") elif note >= 14: print("Bien") elif note >= 10: print("Passable") else: print("Insuffisant") ``` **Trace avec note = 14** : - `14 >= 16` → False - `14 >= 14` → **True** → **Sortie : `Bien`** --- ## Pièges fréquents - **`=` à la place de `==`** : `if x = 5:` est une erreur de syntaxe. La comparaison s'écrit `==`. - **`elif` ou plusieurs `if`** : avec `elif`, un seul bloc s'exécute. Avec plusieurs `if` séparés, chaque test est évalué. L'exercice « À vous » en fin de page porte sur ce piège. - **Priorité de `not`** : `not a or b` se lit `(not a) or b`, pas `not (a or b)`. - **Indentation** : un `else` doit être aligné avec son `if`. Un décalage d'une espace change complètement le comportement. --- ## Conditions imbriquées ```python x = int(input()) # entrée : 6 if x % 2 == 0: if x % 3 == 0: print("divisible par 6") else: print("pair mais pas par 3") else: print("impair") ``` **À manipuler :** suivez l'exécution avec x = 6. Le programme passe par les lignes 2 et 3, puis affiche à la ligne 4. ```sq-trace x = int(input()) # entrée : 6 if x % 2 == 0: if x % 3 == 0: print("divisible par 6") else: print("pair mais pas par 3") else: print("impair") --- 1 | x = 6 | 2 | | 3 | | 4 | | divisible par 6 ``` ## À vous **À manipuler :** avec x = 10, prédisez la sortie de chaque programme. ```sq-affiche x = 10 if x > 0: print("positif") elif x > 5: print("grand") print("fin") --- réponse: positif\nfin explication: avec elif, un seul bloc s'exécute. x > 0 est vrai : le test x > 5 n'est jamais évalué. ``` ```sq-affiche x = 10 if x > 0: print("positif") if x > 5: print("grand") print("fin") --- réponse: positif\ngrand\nfin explication: les deux if sont indépendants. Les deux tests sont vrais, les deux affichages ont lieu. ``` ```sq-affiche a = 4 b = 7 print(a > 3 and b < 5) print(a > 3 or b < 5) print(not a > 3) --- saisie: lignes réponse: False\nTrue\nFalse explication: a > 3 vaut True et b < 5 vaut False. and demande les deux, or en demande un, not inverse. ``` %% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Lecture de Code - Python/Lecture de code - Python|Accueil · Lecture de code - Python]] > > | [[Code et Développement/Programmation/Lecture de Code - Python/02_variables_entrees_sorties\|← Variables, entrées, sorties]] | [[Code et Développement/Programmation/Lecture de Code - Python/04_boucle_for\|Boucle `for` →]] | > |:---|---:| %% nav-fin %%