Bonjour,
Je souhaiterais vérifier automatiquement des fichiers remis par des élèves (eleve1.py, eleve2.py). Chacun de ces fichiers comprend les mêmes noms de fonctions : exercice1() et exercice2().
Le programme principal tente d'importer un nouveau fichier élève à chaque tour de boucle mais cela génère une erreur d'importation. Voici le corps du fichier supervisant la correction :
Le problème se situe au niveau des lignes 38 et 39. Cette étape empêche le bon fonctionnement des lignes 19 et 27 lors de l'examen des réponses élèves. Python ne cherche pas la bonne fonction, celle déclarée dans les fichiers eleve1.py puis eleve2.py.
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
42
43
44
45
46
47
48
49
50
51 from importlib import * import os # Fichier prof donnant les bonnes réponses import prof as source_prof module = None noms_fichiers_eleves = ['eleve1.py', 'eleve2.py'] # Pour tenter des imports mais sans succès : import noms_eleves[i] impossible dans la boucle noms_eleves = ['eleve1', 'eleve2'] def verification(prof, eleve) : if eleve == prof : res = 1 else : res = 0 return res def exercice1() : global source_eleve, module prof = source_prof.exercice1() eleve = module.exercice1() return verification(prof, eleve) def exercice2() : global source_eleve prof = source_prof.exercice2() eleve = module.exercice2() return verification(prof, eleve) def correction() : global noms_fichiers_eleves, module # Boucle sur le nombre de fichiers élèves for num_eleve in range(2) : try : nom_fichier_eleve = noms_fichiers_eleves[num_eleve] # Tentative d'importation de eleve1 puis de eleve2 module = compile('nom_fichier_eleve', '<string>', 'exec') import module somme = 0 somme += exercice1() somme += exercice2() print("Elève ", str(num_eleve+1), " : ",somme) except ImportError : print("Erreur importation ",nom_fichier_eleve) correction()
Comment importer un nouveau fichier dont les noms des fonctions écraseront les références précédentes ? Merci d'avance pour votre aide.
Voici le contenu des fichiers eleve1.py, eleve2.py et prof.py :
eleve1.py
eleve2.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def exercice1(x) : return 2*x def exercice2(x) : return 3*x
prof.py :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def exercice1(x) : return 20*x def exercice2(x) : return 30*x
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def exercice1(x) : return 20*x def exercice2(x) : return 30*x
Partager