Expliquez le branchement conditionnel avec les instructions if en Python.
- Notions de base sur les instructions if (if, elif, else)
- Spécifier des conditions avec des opérateurs de comparaison, etc.
- Spécifier les conditions par numéro, liste, etc.
- Spécifier des conditions multiples ou des négations avec des opérateurs logiques (et, ou, pas)
- Expressions conditionnelles sur les nouvelles lignes et les lignes multiples
Il existe également un opérateur ternaire qui décrit une branche conditionnelle en une seule ligne. Voir l'article suivant.
- RELATED :Écrire des instructions if en une ligne avec l'opérateur ternaire de Python (opérateur conditionnel)
- Notions de base sur les instructions if (if, elif, else)
- Spécifier des conditions avec des opérateurs de comparaison, etc.
- Spécifier les conditions par numéro, liste, etc.
- Spécifier des conditions multiples ou des négations avec des opérateurs logiques (et, ou, pas)
- Expressions conditionnelles sur les nouvelles lignes et les lignes multiples
Notions de base sur les instructions if (if, elif, else)
La forme de base de l'instruction if est la suivante
if Conditional expression 1:
`Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
`Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
`Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
`Processing when all conditionals are false.`
Le “elif” correspond au “else if” en C et dans d'autres langages, et il peut y avoir un nombre quelconque de “elifs”.
S'il n'y a qu'une seule expression conditionnelle ou si le traitement lorsque false n'est pas nécessaire, les blocs “elif” et “else” peuvent être omis.
Spécifier des conditions avec des opérateurs de comparaison, etc.
Spécifiez la condition avec une opération qui renvoie un type bool (vrai, faux), comme un opérateur de comparaison.
Les opérateurs de comparaison Python sont les suivants
opérateur | résultat |
---|---|
x < y | vrai si x est inférieur à y |
x <= y | vrai si x est inférieur ou égal à y |
x > y | vrai si x est plus grand que y |
x >= y | vrai si x est supérieur ou égal à y |
x == y | vrai si les valeurs x et y sont égales |
x != y
x is y
x is not y
x in y
x not in y
Exemple. Pour plus de commodité, il est défini comme une fonction avec l'instruction def.
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
Ce qui suit peut être écrit d'une manière qui est unique à Python. Voir l'article suivant pour plus de détails.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
==
!=
Ce qui précède est une comparaison de valeurs ; pour comparer les identités d'objets, utilisez ce qui suit
is
is not
Par exemple, lors de la comparaison d'un nombre entier et d'un nombre à virgule flottante, “==” renvoie vrai si les valeurs sont équivalentes, mais “is” renvoie faux car il s'agit d'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
Il est également possible de faire la condition si une liste ou une chaîne de caractères contient un élément spécifique (caractère).
in
:inclurenot in
:ne comprenant pas
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
Spécifier les conditions par numéro, liste, etc.
L'expression conditionnelle d'une instruction if peut être un nombre, une liste ou un autre objet qui n'est pas de type bool (true, false).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Dans l'expression conditionnelle d'une instruction if Python, les objets suivants sont considérés comme faux.
- Constantes définies comme étant fausses:
None
,false
- Zéro dans le type numérique:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Séquence ou collection vide:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Les nombres représentant zéro, les chaînes de caractères vides, les listes, etc. sont considérés comme faux ; tous les autres sont considérés comme vrais.
Le jugement de l'objet peut être vérifié avec bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Cela peut être utilisé pour simplement écrire le processus lorsque la liste est vide, par exemple.
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 la chaîne 'False' sera également vraie, car, comme le montre l'exemple ci-dessus, toute chaîne qui n'est pas vide dans la chaîne sera vraie. Pour convertir une chaîne spécifique telle que 'True' ou 'False' en 1,0, utilisez strtobool() dans le module distutils.util.
Spécifier des conditions multiples ou des négations avec des opérateurs logiques (et, ou, pas)
Les opérateurs logiques (et, ou, pas) peuvent être utilisés pour gérer la conjonction logique, la disjonction logique et la négation de plusieurs conditions.
opérateur | (Résultat (dans l'expression conditionnelle d'une instruction if). |
---|---|
x and y | vrai si x et y sont tous deux vrais |
x or y | vrai si x ou y est vrai |
not x | faux si x est vrai, vrai si x est faux |
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
En fait, “x et y” et “x ou y” ne renvoient pas Vrai ou Faux, mais soit x soit y. Tant qu'ils sont utilisés dans des expressions conditionnelles dans des instructions if, il n'y a pas lieu de s'en préoccuper, puisqu'ils évaluent Vrai ou Faux. Voir l'article suivant pour plus de détails.
- RELATED :Opérateurs logiques de Python “and, or, not” (conjonction logique, disjonction logique, négation)
Il est possible d'utiliser et et ou plus d'une 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
Expressions conditionnelles sur les nouvelles lignes et les lignes multiples
Lorsque plusieurs expressions conditionnelles sont utilisées en les reliant par “et” ou “ou” et que chaque ligne devient longue, il est parfois nécessaire de rompre l'expression conditionnelle et de l'écrire sur plusieurs lignes.
Un saut de ligne peut être effectué en utilisant une barre oblique inverse ou en mettant toute la ligne entre parenthèses.
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
Vous pouvez utiliser une barre oblique inverse pour rompre une ligne autant de fois que vous le souhaitez. De même, vous pouvez rompre une ligne autant de fois que vous le souhaitez entre parenthèses. Il n'y a pas de limite d'indentation.
Notez qu'il s'agit d'une technique qui peut être utilisée partout dans le code Python, et pas seulement dans les instructions if.