Informations sur la validation France-IOI: Difference between revisions
Jump to navigation
Jump to search
Wiki-cours (talk | contribs) mNo edit summary |
No edit summary |
||
(18 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
[[Programmation_et_données_numériques_M1_Physique_Appliquée|<-- Site du cours]] | [[Programmation_et_données_numériques_M1_Physique_Appliquée|<-- Site du cours]] | ||
Changements dans les dates requises de validation: | Changements dans les dates requises de validation : il vous faut | ||
* | * '''valider le niveau I pour le 12/10/2023 à 23h59''' | ||
* | * '''valider le niveau II pour le 16/11/2023 à 23h59''' | ||
France-IOI vous permet | France-IOI vous permet de travailler en autonomie en dehors des séances de TDs. On privilégiera maintenant les exercices des TDs, la validation consistera donc à du travail personnel. | ||
=== Notes de | <!-- | ||
=== Notes de validation finales des étudiants au 10/11/16 === | |||
La note sur 20 est | La note sur 20 est calculée selon la formule : | ||
<math>\text{Note} = 10 | <math>\text{Note} = 10\times(\%\text{Niv1} + \%\text{Niv2})</math> | ||
<source lang=python> | <source lang=python> | ||
========================================================== | ============================================================ | ||
NOM Prénom | NOM Prénom | %exo | Niv1 | Niv2 | Note | | ||
========================================================== | ============================================================ | ||
ADA SIMA MARIE JOELLE Doliana | 0.39 | 1.00 | 1.00 | 20.00 | | |||
AL KHOURY Jean | 1.00 | 1.00 | 1.00 | 20.00 | | |||
BOUDRIES Fahem | BEN HAMOUDA Wassim | 0.61 | 1.00 | 1.00 | 20.00 | | ||
BOUDRIES Fahem | 0.66 | 1.00 | 1.00 | 20.00 | | |||
BOUFFETIER Victorien | 0.34 | 1.00 | 1.00 | 20.00 | | |||
BREBAN Arthur | 0.48 | 1.00 | 1.00 | 20.00 | | |||
BRETEL Rémi | 0.79 | 1.00 | 1.00 | 20.00 | | |||
BRILLOUET Pierre | 1.00 | 1.00 | 1.00 | 20.00 | | |||
CAILLAS Augustin | 0.30 | 1.00 | 1.00 | 20.00 | | |||
CASTELAIN Maxime | 0.41 | 1.00 | 1.00 | 20.00 | | |||
DEFOORT Grégoire | CLAVEAU Julien | 0.64 | 1.00 | 1.00 | 20.00 | | ||
COQUIDÉ Erwan | 0.27 | 1.00 | 1.00 | 20.00 | | |||
DE GRANDSAIGNES Hervé | 0.26 | 1.00 | 0.88 | 18.75 | | |||
DEFOORT Grégoire | 0.56 | 0.87 | 0.88 | 17.42 | | |||
DEPONTAILLER Lucie | 0.96 | 1.00 | 1.00 | 20.00 | | |||
DIAF Mohamed | 0.98 | 1.00 | 1.00 | 20.00 | | |||
EID Doris | 0.79 | 1.00 | 1.00 | 20.00 | | |||
FLORES GALICIA Fatima | 0.72 | 1.00 | 1.00 | 20.00 | | |||
GUERFA Driffa | 0.84 | 1.00 | 1.00 | 20.00 | | |||
HERNANDEZ SANCHEZ Jessica | 0.97 | 1.00 | 1.00 | 20.00 | | |||
HU Xu | 0.99 | 1.00 | 1.00 | 20.00 | | |||
JALAL Yassine | 0.75 | 1.00 | 1.00 | 20.00 | | |||
JOIE Mathieu | 1.00 | 1.00 | 1.00 | 20.00 | | |||
KUMAR Ritesh | 0.37 | 0.20 | 1.00 | 12.00 | | |||
LEFEBVRE Corentin | 0.74 | 1.00 | 0.88 | 18.75 | | |||
LI Ying | 1.00 | 1.00 | 1.00 | 20.00 | | |||
LIANG Chenmeijing | 0.83 | 1.00 | 1.00 | 20.00 | | |||
LIM Kyungtak | 1.00 | 1.00 | 1.00 | 20.00 | | |||
LIU Shu | 1.00 | 1.00 | 1.00 | 20.00 | | |||
LIÉNARD--MAYOR Théo | 0.63 | 1.00 | 1.00 | 20.00 | | |||
LOUIS DE CANONVILLE Cyprien | 0.28 | 1.00 | 1.00 | 20.00 | | |||
MARENA Kéba | 0.47 | 1.00 | 1.00 | 20.00 | | |||
MOUSSU Antoine | 0.17 | 0.93 | 0.25 | 11.83 | | |||
MOUTAFIS Nicolas | 0.79 | 1.00 | 1.00 | 20.00 | | |||
NOUR-EDDINE Imam | 0.41 | 1.00 | 1.00 | 20.00 | | |||
REZARD Quentin | 0.47 | 1.00 | 0.44 | 14.38 | | |||
SAMB Cheikh | 0.48 | 1.00 | 1.00 | 20.00 | | |||
ZHOU | SIMON Stéphane | 0.80 | 1.00 | 0.88 | 18.75 | | ||
========================================================== | STUDER David | 0.54 | 1.00 | 1.00 | 20.00 | | ||
SUREAU Robin | 0.72 | 1.00 | 1.00 | 20.00 | | |||
VANDERMAESEN Tiphaine | 0.62 | 1.00 | 1.00 | 20.00 | | |||
VIDALOT Jeoffray | 0.68 | 1.00 | 1.00 | 20.00 | | |||
ZHOU Yuanzhe | 1.00 | 1.00 | 1.00 | 20.00 | | |||
============================================================ | |||
</source> | </source> | ||
Elles sont | Elles sont générées avec le script suivant: | ||
<source lang=python> | <source lang=python> | ||
""" | """ | ||
Un script qui analyse les résultats d'une classe sur http://www.france-ioi.org | Un script qui analyse les résultats d'une classe sur http://www.france-ioi.org | ||
et qui produit un tableau de la validation des élèves. | et qui produit un tableau de la validation des élèves. | ||
écrit | écrit par Guillaume Roux (Université Paris Sud) | ||
merci de me rapporter les bugs. | merci de me rapporter les bugs. | ||
Utilisation sous Linux: | |||
python3 validation-france-ioi.py | |||
ToDo list: | |||
* recuperer le fichier depuis internet via le numero de groupe ou un lien | |||
* eliminer les superviseurs des membres | |||
* verifier automatiquement qu'il n'y a pas d'anomalies dans les dates de resolution (triche) | |||
* faire afficher les moyennes et la date de validation | |||
* export vers tableau Excell ou OpenOffice | |||
""" | """ | ||
from html.parser import HTMLParser | from html.parser import HTMLParser | ||
exercises = [] | |||
jumped = ["c'est plus, c'est moins",": mélange explosif"] | |||
niveau1 = ["Dans le fourré","Vendanges","Course avec les enfants","Construction d'une pyramide","La Grande Braderie","Socles pour statues","Le plus beau Karva","Concours de tir à la corde","Mot de passe du village","Planning de la journée","Le juste prix","Casernes de pompiers","Zones de couleurs","Département d'architecture : construction d'une pyramide","Département de chimie"] | |||
niveau2 = ["Augmentation des taxes","Achat de livres","Une belle récolte","La roue de la fortune","Visite de la mine","Banquet municipal","Choix des emplacements","Une ligne sur deux ","Lire ou ne pas lire, telle est la question","Analyse de fréquence","Écriture en miroir","La bataille","Analyse d’une langue","Sans espaces","Formes creuses","Convertisseur d'unités"] | |||
class Member(object): | class Member(object): | ||
def __init__(self,name,num): | def __init__(self,name,num): | ||
self.name = name | |||
tmp = name.split() | |||
self.nicename = " ".join(tmp[:-2]).upper()+" "+tmp[-2] | self.nicename = " ".join(tmp[:-2]).upper()+" "+tmp[-2].capitalize() | ||
self.number = num | self.number = num | ||
self.results = dict() | self.results = dict() | ||
def note(self,exos=[]): | |||
if exos: return sum([self.results[e] for e in exos])/len(exos) | |||
else: return 0.0 | |||
def showResults(self): | |||
note = 0 | |||
for exo in exercises: | |||
", | note += self.results[exo] | ||
print("\t",exo,":",self.results[exo]) | |||
class Parser(HTMLParser): | class Parser(HTMLParser): | ||
def __init__(self): | def __init__(self): | ||
HTMLParser.__init__(self) | HTMLParser.__init__(self) | ||
Line 99: | Line 115: | ||
self.exotype = False | self.exotype = False | ||
self.members = [] | self.members = [] | ||
self.curexo = "" | self.curexo = "" | ||
self.mcount = 0 | self.mcount = 0 | ||
Line 107: | Line 122: | ||
def handle_starttag(self, tag, attrs): | def handle_starttag(self, tag, attrs): | ||
self.inlycee = self.exotype = False | self.inlycee = self.exotype = False | ||
for attr in attrs[:1]: | for attr in attrs[:1]: | ||
Line 124: | Line 138: | ||
self.members.append(Member(data,self.mcount)) | self.members.append(Member(data,self.mcount)) | ||
self.mcount += 1 | self.mcount += 1 | ||
if self.curexo in | if self.curexo in exercises and self.count<len(self.members): | ||
self.members[self.count].results[self.curexo] = self.solved | |||
self.count += 1 | self.count += 1 | ||
if self.exotype and len(data)>=3: | if self.exotype and len(data)>=3: | ||
if "«" in data: data = data[:24] | if "«" in data: data = data[:24] | ||
if not data in jumped: | if not data in jumped: | ||
self.curexo = data | |||
self.count = 0 | self.count = 0 | ||
if (not data in | if (not data in exercises) and self.exocount<114: | ||
self.exocount += 1 | self.exocount += 1 | ||
exercises.append(data) | |||
def showMembers(self): | def showMembers(self): | ||
# print("Found",len(self.members),"members") | |||
maxlenname = max([len(m.nicename) for m in self.members]) | maxlenname = max([len(m.nicename) for m in self.members]) | ||
barre = "="*(maxlenname+31) | barre = "="*(maxlenname+31) | ||
print(barre) | print(barre) | ||
print("NOM Prénom".ljust(maxlenname),"%exo","Niv1","Niv2","Note".rjust(5),sep=" | ",end=" |\n") | |||
print(barre) | print(barre) | ||
for m in self.members: | for m in sorted(self.members,key=lambda x: x.nicename): | ||
pexo = "{:.2f}".format(m.note | pexo = "{:.2f}".format(m.note(exercises)) | ||
pniv1 = "{:.2f}".format(m. | pniv1 = "{:.2f}".format(m.note(niveau1)) | ||
pniv2 = "{:.2f}".format(m. | pniv2 = "{:.2f}".format(m.note(niveau2)) | ||
nf = "{:.2f}".format((m. | nf = "{:.2f}".format((m.note(niveau1)+m.note(niveau2))*10) | ||
print(m.nicename.ljust(maxlenname),pexo,pniv1,pniv2,nf.rjust(5),sep=" | ",end=" |\n") | print(m.nicename.ljust(maxlenname),pexo,pniv1,pniv2,nf.rjust(5),sep=" | ",end=" |\n") | ||
print(barre) | print(barre) | ||
def showResults(self,number=None | def showExercises(self): | ||
print("Found",len(exercises),"exercises") | |||
for e in exercises: print(e) | |||
def showResults(self,number=None): | |||
if number is None: number = range(len(self.members)) | if number is None: number = range(len(self.members)) | ||
print("__"*20) | print("__"*20) | ||
for n in number: | for n in number: | ||
print("Résultat de",self.members[n].nicename,"note :",\ | print("Résultat de",self.members[n].nicename,"note :",\ | ||
self.members[n].note) | self.members[n].note(exercises)) | ||
self.members[n].showResults() | |||
# mettez ici le chemin vers votre fichier à analyser | # mettez ici le chemin vers votre fichier à analyser | ||
fichier = "France-IOI.html" | fichier = "France-IOI.html" | ||
parser = Parser() | parser = Parser() | ||
Line 180: | Line 184: | ||
source.close() | source.close() | ||
parser.showMembers() | parser.showMembers() | ||
#parser.showResults([ | #parser.showResults([8]) | ||
</source> | </source> | ||
--> |
Latest revision as of 14:00, 12 October 2023
Changements dans les dates requises de validation : il vous faut
- valider le niveau I pour le 12/10/2023 à 23h59
- valider le niveau II pour le 16/11/2023 à 23h59
France-IOI vous permet de travailler en autonomie en dehors des séances de TDs. On privilégiera maintenant les exercices des TDs, la validation consistera donc à du travail personnel.