Flux de Contrôle Python

Flux de contrôle Python

Le flux de contrôle est l'ordre dans lequel les instructions individuelles, les commandes ou les appels de fonction sont exécutés ou évalués. Le flux de contrôle d'un programme Python est régulé par des instructions conditionnelles, des boucles et des appels de fonction.

Opérateurs de Comparaison

OpérateurSignification
==Égal à
!=Différent de
<Inférieur à
>Supérieur à
<=Inférieur ou égal à
>=Supérieur ou égal à

Ces opérateurs s’évaluent à True ou False selon les valeurs qui leur sont données.

Exemples :

42 == 42
True
40 == 42
False
'hello' == 'hello'
True
'hello' == 'Hello'
False
'dog' != 'cat'
True
42 == 42.0
True
42 == '42'
False
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

À quoi s'évalue 'hello' == 'Hello' ?
A. True
B. False
C. None
D. Lève une erreur

Opérateurs Booléens

Il existe trois opérateurs booléens : and, or, et not. Dans l’ordre de précédence, du plus élevé au plus bas, ils sont not, and et or.

Table de vérité de l’opérateur and :

ExpressionÉvalué à
True and TrueTrue
True and FalseFalse
False and TrueFalse
False and FalseFalse

Table de vérité de l’opérateur or :

ExpressionÉvalué à
True or TrueTrue
True or FalseTrue
False or TrueTrue
False or FalseFalse

Table de vérité de l’opérateur not :

ExpressionÉvalué à
not TrueFalse
not FalseTrue

Mélange d’Opérateurs

Vous pouvez mélanger des opérateurs booléens et de comparaison :

(4 < 5) and (5 < 6)
True
(4 < 5) and (9 < 6)
False
(1 == 2) or (2 == 2)
True

Vous pouvez également utiliser plusieurs opérateurs booléens dans une expression, ainsi que les opérateurs de comparaison :

2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
True
# Dans l'instruction ci-dessous, 3 < 4 and 5 > 5 est exécuté en premier, s'évaluant à False
# Ensuite, 5 > 4 retourne True, donc le résultat après True or False est True
5 > 4 or 3 < 4 and 5 > 5
True
# Maintenant, l'instruction entre parenthèses est exécutée en premier, donc True and False retourne False.
(5 > 4 or 3 < 4) and 5 > 5
False

Instructions if

L’instruction if évalue une expression, et si cette expression est True, elle exécute ensuite le code indenté suivant :

# instruction if : exécute un bloc de code lorsque la condition est True
name = 'Debora'

if name == 'Debora':  # Vérifie si name est égal à 'Debora'
   print('Hi, Debora')  # Cette ligne s'exécute si la condition est True
Hi, Debora
if name != 'George':
   print('You are not George')
You are not George

L’instruction else ne s’exécute que si l’évaluation de l’if et de toutes les expressions elif sont False :

# if-else : exécute un code différent en fonction de la condition
name = 'Debora'

if name == 'George':
   print('Hi, George.')
else:  # S'exécute si la condition if est False
   print('You are not George')
You are not George
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Quand le bloc else s'exécute-t-il dans une instruction if-else ?
A. Toujours
B. Seulement lorsque la condition if (et toutes les conditions elif si présentes) sont False
C. Seulement lorsque la condition if est True
D. Jamais

Ce n’est qu’après que l’expression de l’instruction if soit False que l’instruction elif est évaluée et exécutée :

# if-elif : vérifie plusieurs conditions en séquence
name = 'George'

if name == 'Debora':
   print('Hi Debora!')
elif name == 'George':  # Vérifié seulement si la condition précédente est False
   print('Hi George!')
Hi George!

les parties elif et else sont facultatives.

name = 'Antony'

if name == 'Debora':
   print('Hi Debora!')
elif name == 'George':
   print('Hi George!')
else:
   print('Who are you?')
Who are you?

Opérateur Conditionnel Ternaire

De nombreux langages de programmation disposent d’un opérateur ternaire, qui définit une expression conditionnelle. L’utilisation la plus courante est de créer une instruction d’affectation conditionnelle simple et concise. En d’autres termes, il offre une ligne de code pour évaluer la première expression si la condition est vraie, et sinon, il évalue la seconde expression.

<expression1> if <condition> else <expression2>

Exemple :

age = 15

# cette instruction if :
if age < 18:
   print('kid')
else:
   print('adult')
kid
# Opérateur ternaire : expression conditionnelle sur une seule ligne
# Syntaxe : valeur_si_vrai if condition else valeur_si_faux
print('kid' if age < 18 else 'adult')
kid

Les opérateurs ternaires peuvent être chaînés :

age = 15

# cet opérateur ternaire :
print('kid' if age < 13 else 'teen' if age < 18 else 'adult')
teen
# est équivalent à cette instruction if :
if age < 13:
    print('kid')
else:
    if age < 18:
        print('teen')
    else:
        print('adult')
teen

Instruction Switch-Case

Instructions Switch-Case

Dans les langages de programmation informatique, une instruction switch est un type de mécanisme de contrôle de sélection utilisé pour permettre à la valeur d'une variable ou d'une expression de modifier le flux de contrôle de l'exécution du programme via la recherche et la correspondance.

Les instructions Switch-Case, ou Structural Pattern Matching, ont été introduites pour la première fois en 2020 via PEP 622, puis officiellement publiées avec Python 3.10 en septembre 2022.

Tutoriel Officiel

Le PEP 636 fournit un tutoriel officiel pour le Pattern Matching Python ou les instructions Switch-Case.

Correspondance de valeurs uniques

response_code = 201
match response_code:
    case 200:
        print("OK")
    case 201:
        print("Created")
    case 300:
        print("Multiple Choices")
    case 307:
        print("Temporary Redirect")
    case 404:
        print("404 Not Found")
    case 500:
        print("Internal Server Error")
    case 502:
        print("502 Bad Gateway")
Created

Correspondance avec le motif or ( | )

Dans cet exemple, le caractère pipe (| ou or) permet à python de retourner la même réponse pour deux cas ou plus.

response_code = 502
match response_code:
    case 200 | 201:
        print("OK")
    case 300 | 307:
        print("Redirect")
    case 400 | 401:
        print("Bad Request")
    case 500 | 502:
        print("Internal Server Error")
Internal Server Error

Correspondance par la longueur d’un Itérable

today_responses = [200, 300, 404, 500]
match today_responses:
    case [a]:
            print(f"One response today: {a}")
    case [a, b]:
            print(f"Two responses today: {a} and {b}")
    case [a, b, *rest]:
            print(f"All responses: {a}, {b}, {rest}")
All responses: 200, 300, [404, 500]

Valeur par défaut

Le symbole underscore (_) est utilisé pour définir un cas par défaut :

response_code = 800
match response_code:
    case 200 | 201:
        print("OK")
    case 300 | 307:
        print("Redirect")
    case 400 | 401:
        print("Bad Request")
    case 500 | 502:
        print("Internal Server Error")
    case _:
        print("Invalid Code")
Invalid Code

Correspondance des Classes Intégrées

response_code = "300"
match response_code:
    case int():
            print('Code is a number')
    case str():
            print('Code is a string')
    case _:
            print('Code is neither a string nor a number')
Code is a string

Garde des Instructions Match-Case

response_code = 300
match response_code:
    case int() if response_code > 99 and response_code < 500:
            print('Code is a valid number')
    case _:
            print('Code is an invalid number')
Code is a valid number

Instructions de Boucle while

L’instruction while est utilisée pour l’exécution répétée tant qu’une expression est True :

# boucle while : répéter le code tant que la condition est True
spam = 0
while spam < 5:  # Continuer tant que spam est inférieur à 5
    print('Hello, world.')
    spam = spam + 1  # Incrémenter le compteur pour éviter une boucle infinie
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que fait une boucle while ?
A. Répète le code tant que la condition est True
B. Exécute le code exactement une fois
C. Exécute le code un nombre fixe de fois
D. Ignore l'exécution du code

Instructions break

Si l’exécution atteint une instruction break, elle sort immédiatement de la clause de la boucle while :

# instruction break : sortir immédiatement de la boucle lorsqu'elle est rencontrée
while True:  # Boucle infinie
    name = input('Please type your name: ')
    if name == 'your name':
        break  # Sortir immédiatement de la boucle

print('Thank you!')
Please type your name: your name
Thank you!

Instructions continue

Lorsque l’exécution du programme atteint une instruction continue, l’exécution du programme saute immédiatement au début de la boucle.

# instruction continue : ignorer le reste de l'itération de la boucle et commencer l'itération suivante
while True:
    name = input('Who are you? ')
    if name != 'Joe':
        continue  # Passer à l'itération suivante, ne pas demander le mot de passe
    password = input('Password? (It is a fish.): ')
    if password == 'swordfish':
        break  # Sortir de la boucle lorsque le mot de passe est correct

print('Access granted.')
Who are you? Charles
Who are you? Debora
Who are you? Joe
Password? (It is a fish.): swordfish
Access granted.

Boucle For

La boucle for itère sur une list, tuple, dictionary, set ou string :

# boucle for : itérer sur chaque élément d'une séquence
pets = ['Bella', 'Milo', 'Loki']
for pet in pets:  # Parcourir chaque animal de compagnie dans la liste
    print(pet)  # Afficher chaque nom d'animal de compagnie
Bella
Milo
Loki
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Sur quoi itère une boucle for ?
A. Seulement les nombres
B. Seulement les chaînes de caractères
C. Toute séquence itérable (liste, tuple, dictionnaire, ensemble, chaîne, etc.)
D. Seulement les listes

La fonction range()

La fonction range() retourne une séquence de nombres. Elle commence à 0, s’incrémente de 1 et s’arrête avant un nombre spécifié :

for i in range(5):
    print(f'Will stop at 5! or 4? ({i})')
Will stop at 5! or 4? (0)
Will stop at 5! or 4? (1)
Will stop at 5! or 4? (2)
Will stop at 5! or 4? (3)
Will stop at 5! or 4? (4)
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que génère range(5) ?
A. Nombres de 1 à 5
B. Nombres de 0 à 4
C. Nombres de 0 à 5
D. Cinq nombres aléatoires

La fonction range() peut également modifier ses 3 arguments par défaut. Les deux premiers seront les valeurs start et stop, et le troisième sera l’argument step. Le pas est le montant par lequel la variable est augmentée après chaque itération.

# range(début, arrêt, pas)
for i in range(0, 10, 2):
   print(i)
0
2
4
6
8

Vous pouvez même utiliser un nombre négatif pour l’argument step afin que la boucle for compte à rebours au lieu de compter à rebours.

for i in range(5, -1, -1):
    print(i)
5
4
3
2
1
0

Instruction For else

Ceci permet de spécifier une instruction à exécuter si la boucle entière a été exécutée. Uniquement utile lorsqu’une condition break peut se produire dans la boucle :

for i in [1, 2, 3, 4, 5]:
   if i == 3:
       break
else:
   print("only executed when no item is equal to 3")

Terminer un Programme avec sys.exit()

La fonction exit() permet de quitter Python.

import sys

while True:
    feedback = input('Type exit to exit: ')
    if feedback == 'exit':
        print(f'You typed {feedback}.')
        sys.exit()
Type exit to exit: open
Type exit to exit: close
Type exit to exit: exit
You typed exit.

Liens pertinents