Des idées révolutionnaires
Projet : notation PIX
Pour faire ce projet, nous avons utilisé un code Python
Les évèves sur PIX ont des notes variant entre 0 et 700, mais réparties de manière inégale autour d'un score moyen. La note de l'élève sera calculée par une fonction linéaire à partir de son score et de la moyenne.
La formule utilisée pour calculer la note est : (12 - 20scoremoyen÷scoremax )/(1-scoremoyen÷scoremax)=b.
Le code Python est :
import matplotlib.pyplot as plt
import numpy as np
fichier = open("Resultats-Test NSI Premi_re Gr1-370448-2021-10-19-1115.csv", encoding="utf8")
ligne = fichier.readline() # lecture de la première ligne
noms_colonnes = ligne.strip().split(";") # récupération de tous les éléments de la première lignes
print("noms colonnes=",noms_colonnes)
Liste_x=[]
Liste_y=[]
for ligne in fichier:
elements = ligne.strip().split(";")
Liste_x.append(elements[3])
Liste_y.append(int(elements[8]))
#print(Liste_x, Liste_y)
fichier.close()
#minimum=min(Liste_y)
#maximum=max(Liste_y)
def mini(liste):
mini=0
for valeur in liste:
if valeur< mini:
mini=valeur
return mini
def maxi(liste):
maxi=0
for valeur in liste:
if valeur> maxi:
maxi=valeur
return maxi
minimum = mini(Liste_y)
maximum = maxi(Liste_y)
def moyenne(liste=[]) :
somme=0
nb_elements=0
for valeur in liste:
somme=somme+valeur
nb_elements=nb_elements+1
#somme = sum(liste)
#nb_elements = len(liste)
moyenne = somme / nb_elements
return moyenne
moyenne=moyenne(Liste_y)
print (moyenne)
#calcul des coefficients de la fonction Note = a score + b
Notemoyenne=int(input("Choississez la note moyenne"))
b = (20-Notemoyenne*maximum/moyenne)/(1-maximum/moyenne)
a=(Notemoyenne-b)/moyenne
Notes=[round(a*score +b,1) for score in Liste_y]
#Notes=[round(20*score/maximum,1) for score in Liste_y]
#print(Notes)
Dictionnaire_note_eleve = dict(zip(Liste_x, Notes))
print(Dictionnaire_note_eleve)
for keys,values in Dictionnaire_note_eleve.items():
print(keys)
print(values)
def tracer_figure(liste1,liste2):
plt.figure(figsize = (16, 10))
plt.plot(liste1,liste2,'bs', label='Nom Elève versus Score PIX',marker='o')
plt.xlabel('Nom Elève')
plt.xticks(np.arange(0,len(liste1)), liste1, rotation = 60)
plt.ylabel('Score PIX')
plt.title("Nom Elève versus Score PIX")
plt.legend()
plt.grid(True)
plt.show()
if __name__=="__main__":
tracer_figure(Liste_x,Liste_y)
tracer_figure(Liste_x,Notes)