sitn:2019:tpnote

TP note de développement informatique

Les scripts de notations automatiques permettent de donner rapidement une note au étudiants mais demandent un certains nombre de traitements manuels. Vous allez devoir les automatiser. Vous trouverez ici, une archive contenant les résultats des derniers scripts utilisés. Un script a été lancé pour chaque étudiant qui a entré une adresse IP pour son manager dans tomuss. Cela a générer autant de fichier de résultats disponible ici. Les problèmes à résoudre sont les suivants :

  1. certaines fois le script ne se lance pas ou échoue et le résultat est donc incomplet.
  2. le script peu être instable et lorsqu'on passe le script sur les deux membres d'un même binôme il arrive que la note soit différente.
  3. il est difficile de faire un script qui calcule le nombre de points maximum à chaque fois.
  4. les résultats doivent être préparés pour être entrés sur tomuss.

Vous devez donc faire un code :

  • Qui lit tous les fichiers du répertoire
  • Qui vérifie dans tous les fichiers la présence des lignes de terminaison :
    Au final 25/28
    ##Pourtomuss11400223 25

Il doit afficher les numéros des serveurs pour lesquels ces lignes ne sont pas présentes

  • Qui donne le maximum possible
  • Qui vérifie que les membres d'un même binôme on la même note (et affiche les cas qui posent problèmes)
  • Qui prépare un export pour tomuss, c'est à dire un tableau de 2 colonnes : Le numéro étudiant et la note.

À partir de la page tomuss et des logs du serveur, disponible ici, vous devez trouver pour chaque groupe d'étudiant :

  • Si les étudiants on réussit à terminer le TP
  • Le temps mis à partir du début du TP (Jeudi 16h pour les TIW et Vendredi 16h pour les DS).
  • Le nombre d'essais total

Enfin vous devez préparer un export avec pour chaque étudiant membre d'un groupe son numéro et le temps.

Le fichier de log ressemble à celui ci :

logi:'1',logr:'0',user:'0',toke:'0',wtok:'0',pase:'1',pass:'0',nbco:'0',login:'vdpain',spwd:'vDp1',puser:'',ppwd:'',stok:'',192.168.76.91,compmd5:'f94dd098b0dcffdebcc8896a4f5241e9',date:2020-01-16 16:50:03
logi:'1',logr:'0',user:'0',toke:'0',wtok:'0',pase:'1',pass:'0',nbco:'0',login:'vdpain',spwd:'vDp1',puser:'',ppwd:'',stok:'',192.168.76.91,compmd5:'f94dd098b0dcffdebcc8896a4f5241e9',date:2020-01-16 16:50:05
logi:'1',logr:'1',user:'1',toke:'1',wtok:'1',pase:'1',pass:'1',nbco:'2',login:'casa',spwd:'c4s4!',puser:'casa',ppwd:'c4s4!',stok:'202447d5d44ce12531f7207cb33b6bf7',192.168.74.138,compmd5:'202447d5d44ce12531f7207cb33b6bf7',date:2020-01-16 16:50:38
logi:'1',logr:'1',user:'1',toke:'1',wtok:'1',pase:'1',pass:'1',nbco:'2',login:'casa',spwd:'c4s4!',puser:'casa',ppwd:'c4s4!',stok:'202447d5d44ce12531f7207cb33b6bf7',192.168.74.138,compmd5:'202447d5d44ce12531f7207cb33b6bf7',date:2020-01-16 16:50:45
logi:'1',logr:'1',user:'1',toke:'1',wtok:'1',pase:'1',pass:'1',nbco:'2',login:'casa',spwd:'c4s4!',puser:'casa',ppwd:'c4s4!',stok:'202447d5d44ce12531f7207cb33b6bf7',192.168.74.132,compmd5:'202447d5d44ce12531f7207cb33b6bf7',date:2020-01-16 16:50:56
logi:'1',logr:'1',user:'0',toke:'0',wtok:'0',pase:'0',pass:'0',nbco:'0',login:'graperand',spwd:'',puser:'',ppwd:'',stok:'',192.168.76.22,compmd5:'4c7e545f5d54403a110f38e390fb78e3',date:2020-01-16 16:50:58
logi:'1',logr:'1',user:'1',toke:'1',wtok:'1',pase:'1',pass:'1',nbco:'3',login:'casa',spwd:'c4s4!',puser:'casa',ppwd:'c4s4!',stok:'202447d5d44ce12531f7207cb33b6bf7',192.168.74.138,compmd5:'202447d5d44ce12531f7207cb33b6bf7',date:2020-01-16 16:51:00

La dernière ligne de cette exemple est une ligne qui correspond à la réussite du TP (nbco = 3 signifie 3 connexions).

Attention, au début du fichier, les lignes ont un format différent car cela correspond à la mise au point du TP.

Le fichier btx_td_emp1_2015-small.xls contient le nombre d'emploi par lieu, en fonction d'un certain nombre de variables (age, sexe, statut et temps). Chaque valeur de chaque variable correspond à une colonne du tableau. Nous souhaitons supprimer une variable. Cela signifie que pour une variable précise, par exemple l'age, nous souhaitons un nouveau fichier contenant une colonne pour toutes les valeur de sexe, statut et temps, chaque colonne est la somme des colonnes contenant les différents ages.

Vous pouvez remarquez que le nom des colonnes est créé à partir du nom et des valeurs de chaque variable. Par exemple, la colonne AGEQ20_65000_SEXE1_STAT10_TP1 contient le nombre de poste tenu par un home (SEXE=1) de moins de 20 ans (AGEQ20_65 = 000) de statut Salarié (STAT=10) et à temps complet (TP=1).

Dans le fichier résultat, la nouvelle colonne “SEXE1_STAT10_TP1” devra contenir la somme des colonnes ['AGEQ20_65000_SEXE1_STAT10_TP1', 'AGEQ20_65020_SEXE1_STAT10_TP1', 'AGEQ20_65025_SEXE1_STAT10_TP1', 'AGEQ20_65030_SEXE1_STAT10_TP1', 'AGEQ20_65035_SEXE1_STAT10_TP1', 'AGEQ20_65040_SEXE1_STAT10_TP1', 'AGEQ20_65045_SEXE1_STAT10_TP1', 'AGEQ20_65050_SEXE1_STAT10_TP1', 'AGEQ20_65055_SEXE1_STAT10_TP1', 'AGEQ20_65060_SEXE1_STAT10_TP1', 'AGEQ20_65065_SEXE1_STAT10_TP1'].

Pour cela il faut d'abord obtenir des information sur le tableau.

  • Lire une première fois le fichier et extraire la liste des lignes qui contiennent les variables et leur valeurs (ligne 6 à 9 dans le fichier actuel) et celle du début du tableau. Cette extraction doit être le plus automatique possible. Essayer de trouver un shéma dans le tableau.
  • Extraire la liste des variables et pour chaque variables les valeurs possibles (en ne comptant qu'une seule fois chaque valeur). Pour vous aider utiliser la fonction unique des séries de données dans pandas.
  • Relire une seconde fois le fichier pour obtenir uniquement le tableau de données.
  • Faire une fonction qui crée une nouvelle DataFrame avec les colonnes agrégées.

Pour vous aider

Il est possible d'utiliser la fonction sum des data frame pour cela. Si l est une liste de titre de colonne de df :

df.loc[:,l].sum(axis=1)

calcule une colonne contenant la somme de toutes les colonnes de df contenues dans l.

Le moyen de construire le tableau demandé est donc de créer toutes les listes des colonnes que vous devez sommer entre elles, par exemple en supprimant la valeur de la variable qui se trouve dans le nom de la colonne.

  • sitn/2019/tpnote.txt
  • Dernière modification : 2020/01/23 09:15
  • de fabien.rico