Contrôle conditionnel Python3

Les instructions conditionnelles Python déterminent quel bloc de code exécuter en fonction du résultat d'exécution (True ou False) d'une ou plusieurs instructions.

Le processus d'exécution des instructions conditionnelles peut être brièvement compris grâce au diagramme suivant :

Processus d'exécution du code :

Mots-clés de jugement conditionnel

Mot-clé / Fonction Description Exemple
if Instruction de jugement conditionnel, exécute le bloc de code lorsque la condition est True if x > 0:
elif Branche de jugement multi-conditions (else if) elif x == 0:
else Exécuté lorsque toutes les conditions ne sont pas satisfaites else:
pass Instruction vide, utilisée comme espace réservé pour garantir une syntaxe complète if x > 0: pass
match Correspondance de motifs structurée (Python 3.10+, similaire à switch) match x: case 1: ...

Instruction if

La forme générale d'une instruction if en Python est la suivante :

if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3
  • Si "condition_1" est True, le bloc d'instructions "statement_block_1" sera exécuté.
  • Si "condition_1" est False, "condition_2" sera évaluée.
  • Si "condition_2" est True, le bloc d'instructions "statement_block_2" sera exécuté.
  • Si "condition_2" est False, le bloc d'instructions "statement_block_3" sera exécuté.

En Python,elifest utilisé au lieu deelse if, donc les mots-clés de l'instruction if sont :if – elif – else。

Remarque :

  • 1. Un deux-points doit être utilisé après chaque condition:, indiquant que ce qui suit est le bloc d'instructions à exécuter lorsque la condition est remplie.
  • 2. Utilisez l'indentation pour diviser les blocs d'instructions. Les instructions ayant le même nombre d'indentations forment ensemble un bloc d'instructions.
  • 3. Il n'existe pas d'switch...caseinstruction en Python, mais dans la version 3.10, l'instructionmatch...casea été ajoutée, avec des fonctionnalités similaires. Voir ci-dessous pour plus de détails.

Démo GIF :

Exemple

Voici un exemple simple d'instruction if :

Exemple

#!/usr/bin/python3 var1 = 100 if var1: print ("1 - si la condition de l'expression est vraie") print (var1) var2 = 0 if var2: print ("2 - si la condition de l'expression est vraie") print (var2) print ("Au revoir !")

Après exécution du code ci-dessus, la sortie est :

1 - if 表达式条件为 true
100
Good bye!

D'après le résultat, on peut voir que, parce que la variable var2 vaut 0, l'instruction à l'intérieur du if correspondant n'a pas été exécutée.

L'exemple suivant montre le calcul et l'estimation de l'âge d'un chien :

Exemple

#!/usr/bin/python3 age = int(input("Veuillez saisir l'âge de votre chien :")) print("") if age <= 0: print("Vous plaisantez !") elif age == 1: print("Équivalent à un humain de 14 ans.") elif age == 2: print("Équivalent à un humain de 22 ans.") elif age > 2: human = 22 + (age -2)*5 print("Âge humain correspondant :", human) ### Invite de sortie input("Appuyez sur la touche Entrée pour quitter")

Enregistrez le script ci-dessus dans le fichier dog.py et exécutez le script :

$ python3 dog.py 
请输入你家狗狗的年龄: 1

相当于 14 岁的人。
点击 enter 键退出

Voici les opérateurs couramment utilisés dans if :

Operator Description
< Inférieur à
<= Inférieur ou égal à
> Supérieur à
>= Supérieur ou égal à
== Égal à, compare si deux valeurs sont égales
!= Différent de

Exemple

#!/usr/bin/python3 # Le programme démontre l'opérateur == # Utilisation de nombres print(5 == 6) # Utilisation de variables x = 5 y = 8 print(x == y)

Le résultat de l'exemple ci-dessus :

False
False

Le fichier high_low.py démontre les opérations de comparaison numérique :

Exemple

#!/usr/bin/python3 # Cet exemple démontre un jeu de devinettes de nombres number = 7 guess = -1 print("Jeu de devinettes de nombres !") while guess != number: guess = int(input("Veuillez entrer le nombre que vous avez deviné :")) if guess == number: print("Félicitations, vous avez deviné juste !") elif guess < number: print("Le nombre deviné est trop petit...") elif guess > number: print("Le nombre deviné est trop grand...")

Après avoir exécuté le script ci-dessus, l'exemple de sortie est le suivant :

$ python3 high_low.py 
数字猜谜游戏!
请输入你猜的数字:1
猜的数字小了...
请输入你猜的数字:9
猜的数字大了...
请输入你猜的数字:7
恭喜,你猜对了!

Imbrication de if

Dans les instructions if imbriquées, vous pouvez placer une structure if...elif...else à l'intérieur d'une autre structure if...elif...else.

if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句

Exemple

# !/usr/bin/python3 num=int(input("Entrez un nombre :")) if num%2==0: if num%3==0: print ("Le nombre que vous avez saisi est divisible à la fois par 2 et par 3") else: print ("Le nombre que vous avez saisi est divisible par 2, mais pas par 3") else: if num%3==0: print ("Le nombre que vous avez saisi est divisible par 3, mais pas par 2") else: print ("Le nombre que vous avez saisi n'est divisible ni par 2 ni par 3")

Enregistrez le programme ci-dessus dans le fichier test_if.py. Après exécution, la sortie est :

$ python3 test.py 
输入一个数字:6
你输入的数字可以整除 2 和 3

match...case

Python 3.10 a ajouté match...casecomme jugement conditionnel, il n'est donc plus nécessaire d'utiliser une série deif-elsepour effectuer des tests.

L'objet après match sera mis en correspondance successivement avec le contenu après case. Si la correspondance réussit, l'expression correspondante est exécutée ; sinon, elle est directement ignorée._Il peut correspondre à n'importe quoi.

SVG : organigramme d'exécution de match...case subject box match subject Down arrow case <pattern_1> ? Match action_1 No match case <pattern_2> ? Match action_2 No match case <pattern_3> ? Match action_3 No match case _ (wildcard) Must match wildcard

Le format de la syntaxe est le suivant :

match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

case _:Similaire àdefault:en C et Java, lorsque les autres cas ne peuvent pas correspondre, celui-ci correspond, ce qui garantit qu'une correspondance réussit toujours.

Exemple

def http_error(status):
    match status:
        case 400:
            return "Mauvaise requête"
        case 404:
            return "Non trouvé"
        case 418:
            return "Je suis une théière"
        case _:
            return "Quelque chose ne va pas avec Internet"
 
print(http_error(400))
print(http_error(404))
print(http_error(418))
print(http_error(500))

Ce qui précède est un exemple qui affiche des codes d'état HTTP. Les résultats de sortie pour plusieurs codes d'état sont :

Bad request
Not found
I'm a teapot
Something's wrong with the internet

Un cas peut également définir plusieurs conditions de correspondance, séparées par|, par exemple :

...
    case 401|403|404:
        return "Not allowed"
SVG : | diagramme de correspondance multi-conditions status 401 403 404 | symbol | | Three lines converge Result box "Not allowed"

Exemple

def check_permission(status):
    match status:
        case 200:
            return "OK - requête réussie"
        case 301 | 302:
            return "Redirection - redirection"
        case 401 | 403 | 404:
            return "Non autorisé - pas de permission ou introuvable"
        case 500 | 502 | 503:
            return "Erreur serveur - erreur serveur"
        case _:
            return "Statut inconnu - code d'état inconnu"
 
for code in [200, 301, 403, 500, 418]:
    print(f"Code d'état {code} : {check_permission(code)}")

match...casePour plus de contenu, consultez :instruction match-case en Python

Autres extensions