Zoofast.fr rend la recherche de réponses rapide et facile. Trouvez des réponses détaillées et précises à toutes vos questions de la part de nos membres de la communauté bien informés et dévoués.

Bonjour, je dois rendre un projet python pour DEMAIN, j'ai du mal à le faire...

Avec la structure de donnée : Tableau = [["NOM","Prénom","DS1","TP2","IE4"],["Coef","",4,0.5,1],["Dupont","Toto",20,14,3],["Dutrotoir","Titi",10,6,"abs"]]

Je dois rédiger les fonctions suivantes :
- ajouter un nouvel élève
- ajouter une nouvelle évaluation
- saisir une note (pour un élève et une évaluation)
- calculer la moyenne d’un élève
- calculer la moyenne d’une évaluation
- Calculer la moyenne de la classe
- afficher le tableau général des résultats de la classe

Je n'arrive vraiment pas à "naviguer" dans la liste, que ce soit pour ajouter une colonne, ajouter des données à un endroit précis, ou même prendre les valeurs d'une colonne pour faire des calculs avec.

Je dois rendre ça demain, merci de me sauver
Merci d'avance

Sagot :

Réponse :

data = [["NOM", "Prénom", "DS1", "TP2", "IE4"], ["Coef", "", 4, 0.5, 1], ["Dupont", "Toto", 20, 14, 3],

       ["Dutrotoir", "Titi", 10, 6, 'abs']]

def get_eleve_index(nom_eleve):

   eleve_index = None

   for index, element in enumerate(data):

       if nom_eleve in element:

           eleve_index = index

   return eleve_index

def get_evaluation_index(nom_evaluation):

   evaluation_index = None

   for index, element in enumerate(data[0]):

       if nom_evaluation in element:

           evaluation_index = index

   return evaluation_index

def get_evaluation_coefficient(nom_evaluation):

   evaluation_index = get_evaluation_index(nom_evaluation)

   evaluation_coefficient = data[1][evaluation_index]

   return float(evaluation_coefficient)

def nouvel_eleve(nom, prenom):

   data.append([nom, prenom])

   for i in range(len(data[0]) - 2):

       data[len(data) - 1].append("abs")

   return data

def nouvelle_evaluation(nom, coef):

   data[0].append(nom)

   data[1].append(coef)

   for i in range(2, len(data) - 2):

       data[i].append("abs")

   return data

def saisir_une_note(nom_eleve, nom_evaluation, note):

   eleve_index = get_eleve_index(nom_eleve)

   evaluation_index = get_evaluation_index(nom_evaluation)

   data[eleve_index][evaluation_index] = note

   return data

def calcul_moyenne_eleve(nom_eleve):

   eleve_index = get_eleve_index(nom_eleve)

   moyenne = 0

   coefficient_totale = 0

   for index, element in enumerate(data):

       if nom_eleve in element:

           eleve_index = index

   for note_index in range(2, len(data[eleve_index])):

       if data[eleve_index][note_index] == 'abs':

           continue

       coefficient = get_evaluation_coefficient(data[0][note_index])

       coefficient_totale += coefficient

       moyenne += float(data[eleve_index][note_index]) * coefficient

   moyenne /= coefficient_totale

   return round(moyenne, 1)

def calcul_moyenne_evaluation(nom_evaluation):

   evaluation_index = get_evaluation_index(nom_evaluation)

   coefficient = get_evaluation_coefficient(nom_evaluation)

   moyenne = 0

   for eleve_index in range(2, len(data)):

       if data[eleve_index][evaluation_index] == 'abs':

           continue

       moyenne += float(data[eleve_index][evaluation_index])

   moyenne /= len(data) - 2

   return round(moyenne, 1)

def calcul_moyenne_classe():

   moyenne = 0

   coefficient_totale = 0

   for eleve_index in range(2, len(data)):

       for note_index in range(2, len(data[0])):

           if data[eleve_index][note_index] == 'abs':

               continue

           coefficient = get_evaluation_coefficient(data[0][note_index])

           coefficient_totale += coefficient

           moyenne += float(data[eleve_index][note_index]) * coefficient

   moyenne /= coefficient_totale

   return round(moyenne, 1)

def afficahe_tableau():

   tableau = [['Moyenne de la classe', calcul_moyenne_classe()]]

   tableau += data[2:]

   return print(tableau)

print('Nouvel note pour Dutrotoir: ', saisir_une_note("Dutrotoir", "IE4", 13))

print('Moyenne de Dupont: ', calcul_moyenne_eleve("Dupont"))

print("Moyenne de l'évaluation TP2: ", calcul_moyenne_evaluation("TP2"))

print('Moyenne de la classe: ', calcul_moyenne_classe())

afficahe_tableau()

Explications :

Je crois que tu connais un peu Python, alors pour éviter de faire un roman de documentation je te laisse regarder tranquillement et me poser des questions si tu en as.

Pour la fonction moyenne élève et moyenne classe c'est la moyenne pondérée, pour la moyenne d'une évaluation, c'est la moyenne arithmétique.

Pour la dernière fonction à faire je n'ai pas vraiment compris ce qui été demandé alors je l'ai fais à ma sauce, à toi de l'éditer.