Parcours
/
Python
Python
/
Programme
/
Conditionnelles
Co

Conditionnelles en Python

94 exercices

À propos de Conditionnelles

En Python, les instructions if, elif (contraction de « else and if ») et else servent à contrôler le flux d'exécution et à prendre des décisions dans un programme. Contrairement à beaucoup d'autres langages de programmation, les versions 3.9 et antérieures de Python n'offrent pas d'instruction case-switch formelle : elles utilisent à la place plusieurs instructions elif pour remplir un rôle similaire.

Python 3.10 introduit une variante d'instruction case-switch appelée pattern matching, qui sera abordée séparément dans un autre concept.

Les instructions conditionnelles utilisent des expressions qui doivent donner True ou False, soit en renvoyant directement un bool, soit en évaluant des valeurs truthy ou falsy (test de valeur de vérité).

x = 10
y = 5

# The comparison '>' returns the bool 'True',
# so the statement is printed.
if x > y:
    print("x is greater than y")
...
>>> x is greater than y

Associé à un if, un bloc de code else facultatif s'exécute lorsque la condition initiale du if est évaluée à False :

x = 5
y = 10

# The comparison '>' here returns the bool False,
# so the 'else' block is executed instead of the 'if' block.
if x > y:
    print("x is greater than y")
else:
    print("y is greater than x")
...
>>> y is greater than x

elif permet d'enchaîner plusieurs évaluations, ou branches.

x = 5
y = 10
z = 20

# The elif statement allows for the checking of more conditions.
if x > y > z:
    print("x is greater than y and z")
elif y > x > z:
    print("y is greater than x and z")
else:
    print("z is greater than x and y")
...
>>> z is greater than x and y

Les opérations booléennes et les comparaisons peuvent se combiner aux conditionnelles pour des tests plus complexes :

>>> def classic_fizzbuzz(number):
...     if number % 3 == 0 and number % 5 == 0:
...         say = 'FizzBuzz!'
...     elif number % 5 == 0:
...         say = 'Buzz!'
...     elif number % 3 == 0:
...         say = 'Fizz!'
...     else:
...         say = str(number)
...
...     return say
        
>>> classic_fizzbuzz(15)
'FizzBuzz!'

>>> classic_fizzbuzz(13)
'13'

Autrement, on peut réécrire l'exemple ci-dessus en n'utilisant que des instructions if avec des returns. Cependant, cette réécriture peut masquer le fait que les conditions sont censées être mutuellement exclusives et peut entraîner des bugs ou des problèmes de maintenance par la suite.

>>> def classic_fizzbuzz(number):
...     if number % 3 == 0 and number % 5 == 0:
...         return 'FizzBuzz!'
...     if number % 5 == 0:
...         return 'Buzz!'
...     if number % 3 == 0:
...         return 'Fizz!'
...
...     return str(number)

>>> classic_fizzbuzz(15)
'FizzBuzz!'

>>> classic_fizzbuzz(13)
'13'

Les conditionnelles peuvent aussi être imbriquées.

>>> def driving_status(driver_age, test_score):
...     if test_score >= 80:
...         if 18 > driver_age >= 16:
...             status = "Student driver, needs supervision."
...         elif driver_age == 18:
...             status = "Permitted driver, on probation."
...         elif driver_age > 18:
...             status = "Fully licensed driver."
...     else:
...         status = "Unlicensed!"
...
...     return status


>>> driving_status(63, 78)
'Unlicensed!'

>>> driving_status(16, 81)
'Student driver, needs supervision.'

>>> driving_status(23, 80)
'Fully licensed driver.'

Les expressions conditionnelles, ou « opérateurs ternaires »

Python n'a pas d'opérateur ternaire ? à proprement parler, mais il est possible d'écrire des conditional expressions sur une seule ligne. Elles prennent la forme <value if True> if <conditional test> else <value if False>. Comme ces expressions peuvent devenir difficiles à lire, il est recommandé de n'utiliser cette forme sur une seule ligne que lorsqu'elle raccourcit le code et en améliore la lisibilité.

>>> def just_the_buzz(number):
...     return 'Buzz!' if number % 5 == 0 else str(number)
    
>>> just_the_buzz(15)
'Buzz!'

>>> just_the_buzz(7)
'7'

Les valeurs truthy et falsy

En Python, on peut tester la valeur de vérité de n'importe quel objet, qui peut donc être utilisé dans une condition, une comparaison ou une opération booléenne. Les objets évalués de cette façon sont considérés comme truthy ou falsy, et s'emploient dans un boolean context.

>>> def truthy_test(thing):
...     if thing:
...         print('This is Truthy.')
...     else:
...         print("Nope. It's Falsy.")


# Empty container objects are considered Falsy.
>>> truthy_test([])
"Nope. It's Falsy."

>>> truthy_test(['bear', 'pig', 'giraffe'])
'This is Truthy.'

# Empty strings are considered Falsy.
>>> truthy_test('')
"Nope. It's Falsy."

>>> truthy_test('yes')
'This is Truthy.'

# 0 is also considered Falsy.
>>> truthy_test(0)
"Nope. It's Falsy."
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Conditionnelles

L'entraînement est verrouillé

Déverrouille 4 exercices de plus pour t'entraîner sur Conditionnelles