
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.
