Prendre des décisions avec if
Python vérifie if puis chaque elif depuis le haut et n'exécute que la première branche dont la condition est True ; les autres sont ignorées.
Un prix de billet qui dépend de l'âge
Voici un problème à essayer avant toute nouvelle syntaxe. Un petit musée des sciences (inventé pour cet exemple) ne fait rien payer aux enfants de moins de 7 ans, 3000 wons de 7 à 18 ans et 5000 wons à tous les autres. Pour un âge donné, le programme doit afficher le prix. Écris d'abord la règle en mots simples, sous forme de liste de questions dans l'ordre où tu les poserais au guichet.
Tu as probablement écrit quelque chose comme ceci : le visiteur a-t-il moins de 7 ans ? Si oui, gratuit, et on s'arrête. Sinon, a-t-il 18 ans ou moins ? Si oui, 3000 wons, et on s'arrête. Sinon, 5000 wons. C'est déjà le programme. Python écrit « si », « sinon si » et « sinon » avec if, elif et else.
age = 12
if age < 7:
price = 0
elif age <= 18:
price = 3000
else:
price = 5000
print(price)3000Trois détails de syntaxe comptent. Chaque ligne de condition se termine par deux-points. Les lignes qui appartiennent à une branche sont indentées, et le tutoriel Python recommande quatre espaces. Quand l'indentation s'arrête, la branche s'arrête, c'est pourquoi print(price) s'exécute quel que soit l'âge. Et une seule branche s'exécute : pour l'âge 12, la première condition est False, la deuxième est True, donc price devient 3000 et le else n'est jamais regardé.
Les comparaisons donnent True ou False
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
| == | égal à | 5 == 5 | True |
| != | différent de | 5 != 5 | False |
| < | inférieur à | 3 < 7 | True |
| <= | inférieur ou égal à | 7 <= 7 | True |
| > | supérieur à | 3 > 7 | False |
| >= | supérieur ou égal à | 18 >= 19 | False |
Remarque le double égal. Un seul = affecte une valeur, deux == comparent. Les chaînes peuvent aussi être comparées : "kimchi" == "Kimchi" vaut False, car les majuscules comptent comme des caractères différents.
L'ordre des lignes elif change la réponse
Comme Python s'arrête à la première condition True, l'ordre des branches compte. Noter un devoir est le cas classique. Vérifie d'abord 90 et plus, puis 80, puis 70. Mets la vérification de 70 en premier et un 95 y est capté et reçoit un C, puisque 95 >= 70 est aussi True.
score = 95
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
print(grade)Aand, or, not combinent des conditions
and n'est True que quand les deux côtés sont True. or est True quand au moins un côté l'est. not inverse True et False. Une condition comme « entre 13 et 18 » peut s'écrire age >= 13 and age <= 18, ou dans la forme plus courte de Python 13 <= age <= 18. Une condition peut aussi se placer dans une autre branche, ce qu'on appelle l'imbrication. Le programme coréen d'informatique au collège nomme les deux, opérations logiques et structures de contrôle imbriquées, dans l'un de ses standards de programmation.
age = 15
has_ticket = True
if 13 <= age <= 18 and has_ticket:
print("Teen entry")
if not has_ticket or age < 7:
print("See the desk")
else:
print("Go in")Teen entry
Go in| if | Exécute les lignes indentées seulement quand la condition est True |
| elif | « Sinon, si » : vérifié seulement quand tout ce qui précède était False |
| else | S'exécute quand aucune condition précédente n'était True |
| == | Compare deux valeurs ; = affecte |
| and / or / not | Les deux vrais / au moins un vrai / l'inverse |
| indentation | Quatre espaces qui marquent les lignes appartenant à une branche |
- Qu'affiche ce code ?
x = 8 if x > 5: print("big") else: print("small") - Qu'affiche ce code ?
age = 7 if age < 7: print("free") elif age <= 18: print("3000") else: print("5000") - Qu'affiche ce code ?
score = 85 if score >= 70: print("C") elif score >= 80: print("B") - Qu'affiche ce code ?
x = 3 if x > 5: print("A") print("B")A
BBA(rien)
- Qu'affiche ce code ?
print(5 == 5.0, "a" == "A") - Qu'affiche ce code ?
t = 30 print(t > 25 and t < 28) - Qu'affiche ce code ?
rain = False print(not rain) - Qu'affiche ce code ?
n = 14 if n % 2 == 0: if n > 10: print("big even") else: print("small even") else: print("odd") - Quelle ligne vérifie correctement si x vaut 10 ?
- if x = 10:
- if x == 10:
- if x == 10
- if (x = 10)
- Mets les lignes dans l'ordre pour que le programme affiche "Even".Sortie
Even
- « if score = 90 : vérifie si score vaut 90. » Un seul = est une affectation. Python s'arrête avec SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '=' ? Écris if score == 90:.
- « if answer == "yes" or "y" : attrape les deux réponses. » Python le lit comme (answer == "yes") or ("y"), et une chaîne non vide comme "y" compte pour vraie : la condition est donc toujours vraie. Écris answer == "yes" or answer == "y".
- « L'indentation, c'est juste pour l'esthétique. » En Python, elle décide des lignes qui appartiennent à la branche. L'oublier arrête le programme avec IndentationError: expected an indented block after 'if' statement on line 2.
- if / elif / else : seule la première branche True s'exécute.
- Les lignes de condition se terminent par :, et la branche est indentée de quatre espaces.
- == compare ; = affecte.
- Mets la condition la plus stricte en premier dans une chaîne elif.
- and, or et not combinent des conditions.
Sources de ce cours (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Consulté le: 2026-10-19