Accueil › Cours › Le choix multiple : Selon
Selon et match…case : choix multiple en algo et Python
Choisis un traitement selon la valeur d'une variable, avec Selon en algorithme et match…case en Python.
Les leçons de ce chapitre
- Un cas par valeur
- Des intervalles de valeurs
- Selon avec des caractères
Leçon 13.1 : Un cas par valeur
La structure à choix multiple compare une seule variable (le sélecteur) à une liste de valeurs. Chaque valeur a son traitement. C'est plus clair qu'une longue chaîne de Sinon Si quand on teste toujours la même variable.
- En algorithme :
Selon choix…FinSelon. Chaque ligne s'écritvaleur : instruction. - Plusieurs valeurs pour le même traitement : on les sépare par des virgules,
6, 7 : …. Sinontraite toutes les valeurs qui ne sont pas dans la liste.- En Python :
match choix:puis uncasepar valeur. Plusieurs valeurs :case 6 | 7:. LeSinons'écritcase _:.
Astuce : Un seul cas est exécuté : le premier qui correspond. Il n'y a pas besoin de break comme dans d'autres langages.
Attention : Le sélecteur doit être un entier, un caractère ou une chaîne. On ne fait pas Selon sur une condition comme x > y.
En Python
Le menu d'un petit restaurant : le client tape un numéro, le programme affiche le plat et son prix.
print("1 : Lablabi, 2 : Fricassé, 3 : Brik")
choix = int(input())
match choix:
case 1:
print("Lablabi : 3 DT")
case 2:
print("Fricassé : 1 DT")
case 3:
print("Brik : 2 DT")
case _:
print("Choix invalide")
En algorithme
Le même menu avec Selon. Remarque Sinon pour tous les autres numéros.
Algorithme Menu
Début
Ecrire("1 : Lablabi, 2 : Fricassé, 3 : Brik")
Lire(choix)
Selon choix
1 : Ecrire("Lablabi : 3 DT")
2 : Ecrire("Fricassé : 1 DT")
3 : Ecrire("Brik : 2 DT")
Sinon Ecrire("Choix invalide")
FinSelon
Fin
TDO
Objet | Type/Nature
choix | Entier
Leçon 13.2 : Des intervalles de valeurs
Un cas de Selon peut couvrir un intervalle : 10..13 : … veut dire « de 10 à 13, bornes comprises ». C'est pratique pour des notes, des âges ou des tranches de prix.
En Python, un case peut avoir une garde : case _ if 10 <= note <= 13:. Le cas est choisi seulement si la condition après if est vraie. On peut aussi écrire la même chose avec if … elif … else.
Attention : Les intervalles ne doivent pas se chevaucher : avec 0..10 puis 10..13, la valeur 10 tombe dans le premier cas seulement. Vérifie chaque borne.
En Python
Une note entière sur 20 devient une appréciation. Les gardes if remplacent les intervalles.
note = int(input())
match note:
case _ if 0 <= note <= 9:
print("Insuffisant")
case _ if 10 <= note <= 13:
print("Moyen")
case _ if 14 <= note <= 20:
print("Bien")
case _:
print("Note invalide")
En algorithme
En algorithme, l'intervalle s'écrit directement avec deux points.
Algorithme Appreciation
Début
Lire(note)
Selon note
0..9 : Ecrire("Insuffisant")
10..13 : Ecrire("Moyen")
14..20 : Ecrire("Bien")
Sinon Ecrire("Note invalide")
FinSelon
Fin
TDO
Objet | Type/Nature
note | Entier
Leçon 13.3 : Selon avec des caractères
Le sélecteur peut être un caractère ou une chaîne : un opérateur +, une lettre, une commande comme "haut". Les valeurs s'écrivent entre guillemets.
Selon ou Si généralisé ?
Selon: une seule variable comparée à des valeurs ou à des intervalles fixes.Si … Sinon Si: des conditions libres, plusieurs variables,et,ou, comparaisons entre deux variables.
Astuce : Dans un cas, on peut mettre plusieurs instructions, et même un Si. Par exemple pour refuser une division par zéro.
En Python
Une calculatrice : on lit deux nombres et un opérateur. Le cas "/" contient un test pour éviter la division par zéro.
a = int(input())
op = input()
b = int(input())
match op:
case "+":
print(a + b)
case "-":
print(a - b)
case "*":
print(a * b)
case "/":
if b != 0:
print(a / b)
else:
print("Division impossible")
case _:
print("Opérateur inconnu")
En algorithme
Les valeurs du sélecteur sont des caractères, donc entre guillemets.
Algorithme Calculatrice
Début
Lire(a)
Lire(op)
Lire(b)
Selon op
"+" : Ecrire(a + b)
"-" : Ecrire(a - b)
"*" : Ecrire(a * b)
"/" : Si b ≠ 0 Alors
Ecrire(a / b)
Sinon
Ecrire("Division impossible")
FinSi
Sinon Ecrire("Opérateur inconnu")
FinSelon
Fin
TDO
Objet | Type/Nature
a, b | Entier
op | Caractère
S'entraîner gratuitement
Chaque leçon a 3 exercices gratuits avec indices pour appliquer ce chapitre avec Hannibot.
← Chapitre précédent : Mise en forme : CSS · Chapitre suivant : Les tris →
Tous les chapitres · Voir les devoirs corrigés de 2ème TI
Cours écrit pour Mission Carthage d'après le programme officiel. Ton professeur reste la référence.