Skip to content

Instruction if en Python (if, elif, else)

L’instruction if (if … elif … else …) est utilisée pour l’exécution conditionnelle en Python.

  • Principes de base de l’instruction if (if, elif, else)
  • Conditions avec opérateurs de comparaison
  • Conditions avec des nombres, des listes, etc.
  • Conditions avec opérateurs booléens (et, ou, non)
  • Comment écrire une expression conditionnelle sur plusieurs lignes

Python fournit également des expressions conditionnelles qui vous permettent d’écrire des opérations comme l’instruction if sur une seule ligne. Voir l’article suivant pour plus de détails.

Principes de base de l’instruction if (if, elif, else)

La forme de base de l’instruction if est la suivante :

if expression 1:
    Executed when expression 1 is True
elif expression 2:
    Executed when expression 1 is False and expression 2 is True
elif expression 3:
    Executed when expression 1, 2 are False and expression 3 is True
...
else:
    Executed when all expressions are False

elif en Python est équivalent à else if en langage C.

Les clauses elif et else peuvent être omises s’il n’y a qu’une seule expression conditionnelle ou s’il n’est pas nécessaire d’exécuter pour False.

Conditions avec opérateurs de comparaison

Vous pouvez spécifier des conditions avec des opérateurs de comparaison.

Les opérateurs de comparaison en Python sont les suivants :

  • x < y
  • x <= y
  • x > y
  • x >= y
  • x == y
  • x != y
  • x est y
  • x n’est pas y
  • x en y
  • x pas en y

Par exemple:

def if_test(num):
    if num > 100:
        print('100 < num')
    elif num > 50:
        print('50 < num <= 100')
    elif num > 0:
        print('0 < num <= 50')
    elif num == 0:
        print('num == 0')
    else:
        print('num < 0')

if_test(1000)
# 100 < num

if_test(70)
# 50 < num <= 100

if_test(0)
# num == 0

if_test(-100)
# num < 0

En Python, vous pouvez écrire comme a < x < b.

def if_test2(num):
    if 50 < num < 100:
        print('50 < num < 100')
    else:
        print('num <= 50 or num >= 100')

if_test2(70)
# 50 < num < 100

if_test2(0)
# num <= 50 or num >= 100

==, != sont utilisés pour comparer des valeurs, et is, is not sont utilisés pour comparer l’identité d’objets.

Par exemple, lors de la comparaison de l’entier int et du nombre à virgule flottante float, si les valeurs sont égales, == renvoie True mais is renvoie False car ce sont des objets différents.

i = 10
print(type(i))
# <class 'int'>

f = 10.0
print(type(f))
# <class 'float'>

print(i == f)
# True

print(i is f)
# False

En utilisant in et not in, il est possible de définir une condition indiquant si une liste ou une chaîne contient un élément ou une sous-chaîne spécifique.

def if_test_in(s):
    if 'a' in s:
        print('a is in string')
    else:
        print('a is NOT in string')

if_test_in('apple')
# a is in string

if_test_in('melon')
# a is NOT in string

Conditions avec des nombres, des listes, etc.

Dans l’expression conditionnelle de l’instruction if, vous pouvez spécifier un objet tel qu’un nombre ou une liste.

if 10:
    print('True')
# True

if [0, 1, 2]:
    print('True')
# True

Les objets suivants sont considérés comme False en Python.

  • constantes définies comme fausses :None and False.
  • zéro de n’importe quel type numérique :0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • séquences et collections vides :'', (), [], {}, set(), range(0)
    Built-in Types — Python 3.8.5 documentation

Tout le reste est considéré comme vrai.

Vous pouvez utiliser bool() pour vérifier si un objet est considéré comme vrai ou faux. Notez que la chaîne à l’exception de la chaîne vide  » est considérée comme True, donc la chaîne ‘False’ est également considérée comme True.

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Vous pouvez facilement écrire des conditions telles que « lorsque la liste est vide ».

def if_test_list(l):
    if l:
        print('list is NOT empty')
    else:
        print('list is empty')

if_test_list([0, 1, 2])
# list is NOT empty

if_test_list([])
# list is empty

Notez que comme dans l’exemple ci-dessus, une chaîne qui n’est pas la chaîne vide  » est considérée comme True, donc la chaîne ‘False’ est également considérée comme True. Utilisez strtobool() dans le module distutils.util pour convertir certaines chaînes telles que ‘True’ et ‘False’ en 1, 0. Consultez l’article suivant.

Conditions avec opérateurs booléens (et, ou, non)

Vous pouvez combiner plusieurs conditions à l’aide des opérateurs booléens (et, ou, non).

def if_test_and_not(num):
    if num >= 0 and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_not(5)
# num is positive odd

if_test_and_not(10)
# num is NOT positive odd

if_test_and_not(-10)
# num is NOT positive odd

Par évaluation de court-circuit, x et y et x ou y renvoient x ou y, et non True ou False. Tant qu’il est utilisé dans l’expression conditionnelle de l’instruction if, sa valeur est évaluée comme True ou False, il n’y a donc pas lieu de s’en soucier.

Il est possible d’utiliser et et ou plusieurs fois.

def if_test_and_not_or(num):
    if num >= 0 and not num % 2 == 0 or num == -10:
        print('num is positive odd or -10')
    else:
        print('num is NOT positive odd or -10')

if_test_and_not_or(5)
# num is positive odd or -10

if_test_and_not_or(10)
# num is NOT positive odd or -10

if_test_and_not_or(-10)
# num is positive odd or -10

Comment écrire une expression conditionnelle sur plusieurs lignes

Si vous utilisez plusieurs expressions conditionnelles avec et ou ou, la ligne peut devenir trop longue.

En utilisant une barre oblique inverse ou en la mettant entre parenthèses (), vous pouvez écrire une expression conditionnelle sur plusieurs lignes.

def if_test_and_backslash(num):
    if num >= 0
       and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_backslash(5)
# num is positive odd

def if_test_and_brackets(num):
    if (num >= 0
        and not num % 2 == 0):
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_brackets(5)
# num is positive odd

Cela ne se limite pas aux instructions if et peut être utilisé n’importe où dans le code Python. Voir l’article suivant pour plus de détails.