repl.it
@fduffaud/

NSI-1ere-CSV-Tables-TD1

Python

No description

fork
loading
Files
  • main.py
  • NotesEleves.csv
  • NouveauFichier.csv
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import csv

def ex3():
    fichier=open("NotesEleves.csv")
    #table=list(csv.reader(fichier))
    #print(table)
    table=list(csv.reader(fichier,delimiter=","))
    print(table,table[1][1])
    fichier.close()


def ex4():
    fichier=open("NotesEleves.csv")
    #table=list(csv.reader(fichier))
    #print(table)
    table=list(csv.DictReader(fichier,delimiter=","))
    print(table,table[2]['NSI'])
    fichier.close()

print(ex3(),ex4())
#********************************************************************
# Exercice 5
#********************************************************************
def convert(dico):
    nsi=int(dico['NSI'])
    maths=int(dico['Maths'])
    anglais=int(dico['Anglais'])
    return {'Nom':dico['Nom'],'Maths':maths,'NSI':nsi,'Anglais':anglais}
    
#convert(table[1])
def ex5():
    fichier=open("NotesEleves.csv")
    table=list(csv.DictReader(fichier))
    table_valide=[convert(ligne) for ligne in table]
    print(table_valide)
    fichier.close()

#********************************************************************
# III  Écriture (export) d’un CSV avec Python
#********************************************************************

# Un nouveau fichier en ouvert en mode écriture
# Si il existe déjà il est écrasé
def III():
    with open("NouveauFichier.csv","w") as sortie:
        objet=csv.DictWriter(sortie,['Nom','Maths','NSI','Anglais'])

    # Pour écrire la ligne d'entêtes
        objet.writeheader()

    # prend la table en argument 
    # et écrit les lignes correspondantes dans le fichier
        tt=[{'Nom': 'Galois', 'Maths': 17, 'NSI': 14, 'Anglais': 17}, {'Nom': 'Gauss', 'Maths': 20, 'NSI': 12, 'Anglais': 8}, {'Nom': 'Euler', 'Maths': 19, 'NSI': 15, 'Anglais': 13}]
        #objet.writerows(tt)
        objet.writerows(table_valide)

#********************************************************************
# Exercice 6 : Écrire une fonction  stats\_csv(fichier)  où \textbf{fichier} est le nom d'un fichier CSV et qui affiche le nombre de lignes et le nombre de colonnes de la table stockée dans le fichier.
#********************************************************************

def stats_csv(fichier):
    '''In : fichier un fichir.csv
       Out : nb lignes et de colonnes'''
    donnees=open(fichier+'.csv','r')
    table=list(csv.DictReader(donnees))
    donnees.close()
    # Lignes : on ajoute  1 pour avoir les lignes en comptant la ligne des attributes
    NbLignes   = len(table)+1 

    # Colonnes : c'est la longueur d'une des lignes (d'un dictionnaire) de la table
    NbColonnes = len(table[1])
    return NbLignes,NbColonnes
 

print(stats_csv('NotesEleves'))

#********************************************************************
# Exercice 7 : On utilise le fichier CSV précédent, NotesEleves.csv.
# 1.  Ajouter dans le fichierNotesEleves.csv une colonne avec la moyenne des élèves.
# 2.  Ajouter dans le fichierNotesEleves.csv une ligne qui contient la moyenne par matière
#********************************************************************
def ex7(fichier):
    donnees=open(fichier+'.csv','r')
    table=list(csv.DictReader(donnees))
    donnees.close()

    # nb elèves : c'est le nb de lignes (sans les attributs)
    NbEleves   = len(table)

    # nb Notes : le nb de colonnes -1
    NbNotes = len(table[1]) - 1

    # Calcul de la moyenne
    somme=[0]*NbNotes

    for i in range(NbEleves):
        dico=table[i]
        dico['Moyenne']=(float(dico['Maths'])+float(dico['NSI'])+float(dico['Anglais']))/NbNotes
    
    # 
    maths=(float(table[0]['Maths'])+float(table[1]['Maths'])+float(table[2]['Maths']))/3
    anglais=(float(table[0]['Anglais'])+float(table[1]['Anglais'])+float(table[2]['Anglais']))/3

    NSI=(float(table[0]['NSI'])+float(table[1]['NSI'])+float(table[2]['NSI']))/3
    table.append({'Nom': 'Moyennes'  ,'Maths':maths,'NSI':NSI,'Anglais':anglais })


    with open("NouveauFichier.csv","w") as sortie:
        objet=csv.DictWriter(sortie,['Nom','Maths','NSI','Anglais','Moyenne'])

    # Pour écrire la ligne d'entêtes
        objet.writeheader()
        objet.writerows(table)
    return table
 

print(ex7('NotesEleves'))
Fetching token
?