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 : 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()
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 : 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
eleve2.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
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