top of page

Notation Pix

Nous allons, à partir d'un fichier csv, un tableur, définir la note de tout les élèves par

rapport à leur score PIX :

Rappel

Pour faire cela, on aura besoin de fonctions

Définition de La Moyenne en Python :

Définition du maximum :

D'une quelconque liste=[]

 

def moyenne(liste):
  somme=0
  compteur=0
      for i in liste:
  # i prend successivement toutes les valeurs de la liste
       print(i)
       somme=i+somme
       # ajoute i à la variable somme
       compteur=compteur+1
       #ajoute 1 à la variable compteur
  print(somme)
  print(compteur)
  print(somme/compteur)
  return (somme/compteur)

def maximum(liste):
  maximum_liste=0
     for i in liste:
       if i> maximum_liste:
           maximum_liste=i
  return maximum_liste

Pour noter les élèves sur 20 à partir des scores pix de chacun on peut le faire sur un graphique

Pour cela je me suis inspiré d'un programme python, qui à partir d'un fichier excel, peut faire un graphique sur la quantité d'électricité produit par les éoliennes par an.

Le voici :

​

import matplotlib.pyplot as plt

fichier = open("elec4.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(",")
  if '2010' in elements[0] or '2011' in elements[0]:
       Liste_x.append(elements[0])
       Liste_y.append(int(elements[6]))
print(Liste_x, Liste_y)
fichier.close()

def tracer_figure(liste1,liste2):
  plt.figure(figsize = (16, 10))
  plt.plot(liste1,liste2, label='eolien=f(t)')

  plt.xlabel('Dates')
  plt.xticks(rotation = 60)
  plt.ylabel('en Gwh')
  plt.title("Production d'électricité d'origine éolienne par an")
  plt.legend()
  plt.show()

if __name__=="__main__":
  tracer_figure(Liste_x,Liste_y)

A partir de ce programme nous pouvons faire ce que nous recherchons.

Commençons par introduire le fichier excel des scores pix dans le même fichier que le programme.

​

Ensuite,

dans le fichier excel ce sont des scores, allant de 200 à 500, or nous voulons ramenés la note sur 20. C'est pourquoi l'usage de la moyenne et du maximum est nécessaire. Mais nous avons également besoin d'un calcul pour obtenir la note.

​

Note= a * score + b

​

Pour obtenir a et b, il faut résoudre un système. Après cette résolution on obtient:

​

b= (20- Notemoyenne*maximum/moyenne)/(1-maximum/moyenne)

a=(Notemoyenne-b)/moyenne

​

Notemoyenne correspond à une moyenne imposer par l'utilisateur.

Pour ce faire, il faudra rajouter une ligne dans le programme

Notemoyenne=int(input("Choisissez la note moyenne"))

La recherche du programme final

Avant d'arriver au programme final, je me suis confronté à plusieurs problèmes.

Tout d'abord, dans la ligne split(,) il faut remplacer la "," par ";" car le fichier excel pix est trié par des points virgules.

Je me suis également retrouver bloquer car j'avais oublié d'appeler les variables moyenne et maximum à la fin.

Cela donne:

moyenne= moyenne(liste_y)

maximum=max(liste_y)

Donc pour récapituler,

j'ai pris exactement le même programme que celui des éoliennes, j'ai ajouté la définition de la moyenne ainsi que celle du maximum puis pour l'aspect graphique, j'ai modifié les légendes des axes et le titre.

Et pour finir, il faut faire une boucle pour faire la calcul de la note sur 20 grâce au calcul énoncé plus haut.

Avant de dévoiler le programme, je tiens à dire que j'ai réaliser le programme seul et à l'aide de la correction pour la boucle du calcul final.

Le Programme pour la Notation Pix

Voici ce que cela donne suite à mes recherches et à la correction:

Import matplotlib.pyplot as plt

​

fichier=open("Notation Pix.cvs", encoding="utf8")

ligne = fichier.readline()

nom_colonnes=ligne.strip().split(";")

print("nom colonnes=", noms_colonnes)

​

Liste_x=[]

Liste_y=[]

for ligne in fichier :

      elements = ligne.strip().split(";")

      Liste_x.append(elements[4])

      Liste_y.append(int(elements[9]))

print(Liste_x,Liste_y)

fichier.close()

​

def tracer_figure(liste1,liste2, nom) : 

plt.figure(figsize = (16, 10)) 

plt.plot(liste1,liste2, label=Nom) 

​

plt.xlabel("Noms") 

plt.xticks(rotation = 60) 

plt.ylabel("") 

plt.title("Notes Pix") 

plt.legend() 

plt.show()

​

tracer_figure(Liste_x, Liste_y,"scores")

​

def moyenne(liste): 

somme=0 

compteur=0     

for i in liste:         

      somme=i+somme             

      compteur=compteur+1     

return (somme/compteur)

​

def max(liste): 

maximum_liste=0    

for i in liste:      

      if i> maximum_liste:          

             maximum_liste=i 

return(maximum_liste)

​

moyenne= moyenne(liste_y)

maximum=max(liste_y)

Notemoyenne=int(input("Choisissez la note moyenne"))

​

b= (20- Notemoyenne*maximum/moyenne)/(1-maximum/moyenne)

a=(Notemoyenne-b)/moyenne

Notes=[ ]

for score in Liste_y :

      Notes.append(round(a*score +b, 1))

tracer_figure(Liste_x, Notes)

​

​

​

​

​

bottom of page