Comment importer plusieurs fichiers comrenant tous les mêmes fonctions - Import et fonction compile()
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 :
Code:
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() |
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.
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
Code:
1 2 3 4 5 6
|
def exercice1(x) :
return 2*x
def exercice2(x) :
return 3*x |
eleve2.py
Code:
1 2 3 4 5 6
|
def exercice1(x) :
return 20*x
def exercice2(x) :
return 30*x |
prof.py :
Code:
1 2 3 4 5 6
|
def exercice1(x) :
return 20*x
def exercice2(x) :
return 30*x |