edubun
Français

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)
Sortie
3000

Trois 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érateurSignificationExempleRésultat
==égal à5 == 5True
!=différent de5 != 5False
<inférieur à3 < 7True
<=inférieur ou égal à7 <= 7True
>supérieur à3 > 7False
>=supérieur ou égal à18 >= 19False

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.

Une chaîne if/elif/else est une échelle. Python descend jusqu'à ce qu'une condition soit True, exécute cette seule branche et saute le reste.
score = 95
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(grade)
Sortie
A

and, 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")
Sortie
Teen entry
Go in
ifExé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
elseS'exécute quand aucune condition précédente n'était True
==Compare deux valeurs ; = affecte
and / or / notLes deux vrais / au moins un vrai / l'inverse
indentationQuatre espaces qui marquent les lignes appartenant à une branche
  1. Qu'affiche ce code ?
    x = 8
    if x > 5:
        print("big")
    else:
        print("small")
  2. Qu'affiche ce code ?
    age = 7
    if age < 7:
        print("free")
    elif age <= 18:
        print("3000")
    else:
        print("5000")
  3. Qu'affiche ce code ?
    score = 85
    if score >= 70:
        print("C")
    elif score >= 80:
        print("B")
  4. Qu'affiche ce code ?
    x = 3
    if x > 5:
        print("A")
    print("B")
    • A
      B
    • B
    • A
    • (rien)
  5. Qu'affiche ce code ?
    print(5 == 5.0, "a" == "A")
  6. Qu'affiche ce code ?
    t = 30
    print(t > 25 and t < 28)
  7. Qu'affiche ce code ?
    rain = False
    print(not rain)
  8. Qu'affiche ce code ?
    n = 14
    if n % 2 == 0:
        if n > 10:
            print("big even")
        else:
            print("small even")
    else:
        print("odd")
  9. Quelle ligne vérifie correctement si x vaut 10 ?
    • if x = 10:
    • if x == 10:
    • if x == 10
    • if (x = 10)
  10. Mets les lignes dans l'ordre pour que le programme affiche "Even".
    Sortie
    Even
Erreurs fréquentes
  • « 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.
Note du professeurPartir du guichet fonctionne parce que les apprenants connaissent déjà la décision ; la seule nouveauté est l'écriture. Demande-leur de dire la règle à voix haute dans l'ordre avant de taper. Le programme de notation dans le mauvais ordre vaut la peine d'être exécuté exprès : il affiche C pour 85 sans aucune erreur, un premier avant-goût de l'erreur de logique. En vérifiant le travail, teste les valeurs limites (6, 7, 18, 19 pour le problème du billet), car les erreurs d'un cran entre < et <= s'y cachent. Le programme coréen d'informatique au collège a un standard sur les opérations logiques et les structures de contrôle imbriquées.
L'essentiel
  • 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