Bonjour à tous,


J'ai actuellement un "formulaire" de gestion des paramètres d'affichage de courbes. Je souhaite contrôler les valeur entrées par l'utilisateur et vu le nombre de paramètres je comptais créer une fonction dédiée qui sélectionne la vérification à effectuer suivant le nom du paramètre concerné.

Nom : ADAotp_param.JPG
Affichages : 585
Taille : 70,0 Ko


Ex : ymin et ymax doivent être des int ; color doit appartenir à la liste des couleur ; line_style doit appartenir à la liste des style de ligne etc... etc..

Je m’apprêtais donc à construire quelques chose du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
select case:
    case "ymin":
    ....
    case "ymax":
    ....
    case "color":
    ....
Mais je n'ai rien trouvé de ce genre.
J'ai à plusieurs reprises trouvé (sur internet) une solution à base de dictionnaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
choices = {'a': 1, 'b': 2}
result = choices.get(key, 'default')
qui semble simple et élégante, mais je n'ai pas réussi à créer une fonction qui intègre ce principe.
Je voulais passer le nom du paramètre en clé et la valeur à contrôler. L'idée étant que le nom appel la fonction interne associée.
J'ai fais ce bout de code histoire de comprendre le fonctionnement, et ça semblait pouvoir fonctionner, sauf que ça exécute toutes les fonctions à suivre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""
"""
import pdb
 
def switch_cases(name, value):
	"""
        Check data conformity
        """
	def ymin(value):
		try:
			value = int(value)
			print (value)
		except Exception as e:
			raise e
 
	def ymax(value):
		try:
			value = int(value)
			print (value)
		except Exception as e:
			raise e
 
 
	choices = {'ymin' : ymin(value), 'ymax' : ymax(value)}
 
	result = choices.get(name, 'default')
	print(result)
 
 
pdb.set_trace()
 
# Test avec ymin et 10
switch_cases('ymin', 10)

Vos conseils sont les bienvenus sur la solution à base de dictionnaire ou sur la validation de données au sens large...