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")
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:
- Au moins 4 cas possibles
- Les cas sont des valeurs précises (pas des intervalles)
- 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.