Aller au contenu principal

Condition - Match

Le match est similaire au switch des autres langages, mais il est conçu pour gérer la structure au lieu des valeurs.

Une suite if-elif-else permet de faire plusieurs conditions sur des valeurs booléennes. Un switch permet de faire des branchements selon les possibilités d'une variable. Exemple:

nb: int = int(input("Entrez 1 pour pile, 2 pour face: "))

if nb == 1:
print("Pile")
elif nb == 2:
print("Face")
else:
print("Invalide")

# Avec le match:

match nb:
case 1:
print("Pile")
case 2:
print("Face")
case _:
print("Invalide")
Mécanisme de l'instruction matchMécanisme de l'instruction match

Tous les case sont des cas possibles de la variable donnée au match, le cas _ est l'équivalent du else.

Exemple plus complexe:

nb: int = int(input("Entrez le résultat du lancé du dé: "))

if nb == 1 or nb == 2:
print("Échec")
elif nb == 3:
print("Bof")
elif nb == 4 or nb == 5:
print("Ok")
elif nb == 6:
print("Parfait")
else:
print("Invalide")

# Avec le match, la barre verticale est un or:

match nb:
case 1 | 2:
print("Échec")
case 3:
print("Bof")
case 4 | 5:
print("Ok")
case 6:
print("Parfait")
case _:
print("Invalide")

VOici un exemple où le match est moins efficace qu'un if-elif-else:

nb: int = int(input("Entrez le résultat du lancé du dé: "))

if 1 <= nb <= 3:
print("Échec")
elif 4 <= nb <= 6:
print("Réussite")
else:
print("Invalide")

# Avec le match:

match nb:
case nb if 1 <= nb <= 3:
print("Échec")
case nb if 4 <= nb <= 6:
print("Réussite")
case _:
print("Invalide")

3 règles à retenir pour choisir le match au lieu d'un if:

  1. Au moins 4 cas possibles
  2. Les cas sont des valeurs précises (pas des intervalles)
  3. Les conditions sont sur la même variable

Si vous avez juste 3 cas, mais que les critères 2 et 3 sont respectés, le match est autant valable que le if.