Salut à tous,
Un petit exercice de calcul demande la saisie répétitive de plusieurs valeurs numériques entières.
Pour contrôler et effectuer ces saisies, j'ai mis en place une fonction qui permet aussi de sortir éventuellement de l'application à ce moment là.
A la fin de l'exercice, la fonction 'message', propose de recommencer un autre calcul.
L'invite de la fonction 'message' est personnalisable car la fonction est utilisée aussi par l'input de la fonction saisie.
Les 2 fonctions sont regroupées dans un module indépendant, l'ensemble est OK.
J'ai essayé de convertir ces 2 fonctions en classe.
La fonction 'saisie' est devenue la 'class SaisieInt():' elle utilise la fonction 'message' c'est toujours OK.
Je ne réussis pas à convertir cette fonction 'message' en classe qui puisse être utilisée à la fois par la classe SaisieInt() et par l'invite de fin.
Je cherche un conseil, un coup de main, un exemple.
Merci d'avance.
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
34
35
36
37 # le code avec les fonctions # Bout de code destiné à être utilisé en module indépendant #------------------------------------------------------------------------------------------- import sys def message(txtMessage): """ message interrogatif ( O / N ) personnalisable """ rep = input(txtMessage + "\n\n ( O / N ) ? ") return True if rep != chr(79) and rep != chr(111) else False def saisie(invite): """ Controle de saisie de valeurs 'int' avec possibilité de quitter l'application à chaque saisie par la touche < q > ou < Q > """ while True: rep = (input(invite)) # invite personnalisée if rep == 'q': if not message("Voulez-vous quitter ? "): exit("Quitter") try: rep = int(rep) return rep except(ValueError, TypeError): print("erreur de saisie ",file = sys.stderr) pass if __name__ == '__main__': while 1: for var in 'abcd': laVar = saisie("Quelle valeur pour " + var + " ?") print(laVar) if not message(" < O > pour Quitter\n\ autre pour recommencer"): exit("Fin") # != 'O' ou != 'o' pour relancer
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
34
35
36
37
38
39
40
41 # le code avec classe # Bout de code destiné à être utilisé en module indépendant #------------------------------------------------------------------------------------------- import sys class SaisieInt(): """ Controle de saisie de valeurs 'int' avec possibilité de quitter l'application à chaque saisie par la touche < q > ou < Q > """ def __init__(self, intVar): self.v = intVar def controle(self): while True: rep = (input(self.v + " : ")) # invite personnalisée if rep in 'qQ': if not message("Voulez-vous quitter ? "): exit("Quitter") try: rep = int(rep) return rep except(ValueError, TypeError): print("erreur de saisie ",file = sys.stderr) pass def message(txtMessage): """ message interrogatif ( O / N ) personnalisable """ rep = input(txtMessage + "\n\n ( O / N ) ? ") return True if rep != chr(79) and rep != chr(111) else False if __name__ == '__main__': while 1: for var in 'abcd': laVar = SaisieInt("Quelle valeur pour " + var + " ?") print(laVar.controle()) if not message(" < O > pour Quitter\n\ autre pour recommencer"): exit("Fin") # != 'O' ou != 'o' pour relancer
Partager