Allons-y : d'abord une classe Verbe dont la méthode present lève une exception MauvaisVerbe si l'infinitif n'est pas en -er.
1 #!/usr/bin/env python
2 # -*- coding: iso-8859-1 -*-
3
4 # écrire un script demandant un verbe en -er ou -ir et le conjuguant à la première personne du futur
5 # reprendre la conjugaison au futur, mais à toutes les personnes
6 # et au présent ?
7 # classe Verbe
8
9 pronoms = ('je', 'tu', 'il')
10
11 # une exception de mon cru
12 class MauvaisVerbe:
13 pass
14
15 class Verbe:
16 def __init__(self, inf):
17 self.inf = inf
18
19 def present(self):
20 deuxDerniersCarInfinitif = self.inf[-2:]
21 if deuxDerniersCarInfinitif != 'er':
22 raise MauvaisVerbe
23 # print 'deuxDerniersCarInfinitif = ', deuxDerniersCarInfinitif
24 term = {'je' : 'e', 'tu' : 'es', 'il' : 'e'}
25 rad = self.inf[:-2] # radical (on enlève la terminaison -er)
26 for p in pronoms:
27 print "{0} {1}{2}".format(p, rad, term[p])
28
29 def futur(self):
30 term = {'je' : 'ai', 'tu' : 'as', 'il' : 'a'}
31 for p in pronoms:
32 print "{0} {1}{2}".format(p, self.inf, term[p])
33
34 if __name__ == "__main__":
35 print 'lancer test-VerbeExc.py'
Ensuite un programme de test qui importe ce module en « attrapant » les éventuelles exceptions :
1 #!/usr/bin/env python
2 # -*- coding: iso-8859-1 -*-
3 # import Verbe
4
5 from Verbe import *
6
7 def essai(inf):
8 try:
9 print('essai : infinitif = {}').format(inf)
10 v = Verbe(inf)
11 v.present()
12
13 except MauvaisVerbe:
14 print '{} : mauvais groupe'.format(inf)
15 except :
16 print 'OVNI' # exception autre que MauvaisVerbe
17 finally:
18 print 'fin du test pour {}'.format(inf) # erreur ou non
19
20 essai("programmer")
21 essai("prendre") # va se terminer en catastrophe
22 essai("développer") # pourtant ce test-là est bien exécuté
À l'exécution, cela donne :
yves@dee:queue$ ./test-VerbeExc.py essai : infinitif = programmer je programme tu programmes il programme fin du test pour programmer essai : infinitif = prendre prendre : mauvais groupe fin du test pour prendre essai : infinitif = développer je développe tu développes il développe fin du test pour développer
© Yves Guidet jeudi 9 juillet 2020, 09:48:17 (UTC+0200) (bella ubuntu, site printemps) yves.guidet@gmail.com