• Aucun résultat trouvé

tp_rw_cor1 January 6, 2021

N/A
N/A
Protected

Academic year: 2022

Partager "tp_rw_cor1 January 6, 2021"

Copied!
6
0
0

Texte intégral

(1)

tp_rw_cor1

January 6, 2021

[1]: from numpy import average, array, arange#moyenne en numpy, tableaux

1 Création d’un fichier

[2]: #écriture dans le fichier test f = open('test','w')

f.write('toto et titi\n')

f.write('titi et gros minet\n') f.write('un titi, deux titis\n') f.write('une ligne de texte\n') f.close()

[3]: f = open('test','r') print(f.read()) f.close()

toto et titi

titi et gros minet un titi, deux titis ue ligne de texte

2 Supprimer

Ecrire une fonction

def removeChaine(nameFile, asup):

"""

Supprime la chaine asup du contenu du fichier de nom nameFile et met le résultat dans un fichier de nom nameFile_out

"""

On peut utiliser split etjoin:

[4]: s = 'un mot; un autre; encore un autre' l = s.split(';')

print(l)

res = '-- xx --'.join(l)

(2)

print(res)

['un mot', ' un autre', ' encore un autre']

un mot-- xx -- un autre-- xx -- encore un autre [5]: # ************

def removeChaine(nameFile, asup):

"""

Supprime la chaine asup du contenu du fichier de nom nameFile

"""

fich = open(nameFile,'r')#ouvrir en lecture contenu = fich.read()

fich.close()

t = contenu.split(asup) # le decompose en une liste sans asup fich = open(nameFile+'_out','w')#ouvrir avec écrasement

fich.write(u' '.join(t))#concatener puis écrire fich.close()

[6]: nameFile = 'test'

print ('verification avant modif ') fich = open(nameFile,'r')

contenu = fich.read() print(contenu)

fich.close()

removeChaine('test','titi')

print('verification apres modif ') fich = open(nameFile+'_out','r') contenu = fich.read()

print(contenu) fich.close()

verification avant modif toto et titi

titi et gros minet un titi, deux titis ue ligne de texte

verification apres modif toto et

et gros minet un , deux s ue ligne de texte

(3)

3 Conserver une ligne sur deux

Ecrire une fonctio

def une_sur_deux(nameFile):

"""conserve une ligne sur deux

et met le résultat dans un fichier de nom nameFile_out

"""

[7]: # ****************

def une_sur_deux(nameFile):

i = 0#compteur de ligne

f1 = open(nameFile,'r')#ouvrir en lecture f2 = open(nameFile+'_out','w')#écriture l = f1.readline()

while l:

if i%2==0:

f2.write(l) l=f1.readline() i+=1

f1.close(); f2.close() [8]: nameFile = 'test'

print ('verification avant modif ') fich = open(nameFile,'r')

contenu = fich.read() print(contenu)

fich.close()

une_sur_deux('test')

print('verification apres modif ') fich = open(nameFile+'_out','r') contenu = fich.read()

print(contenu) fich.close()

verification avant modif toto et titi

titi et gros minet un titi, deux titis ue ligne de texte

verification apres modif toto et titi

un titi, deux titis

(4)

4 Un fichier de notes

Dans un fichier textenotes (créé par exemple avec le bloc-note dans le répertoire courant), écrire Nom : Hoareau; Prénom: Jean;Notes : 10 12 6 13

Nom:Dupont ; Prénom : Pierre ; Notes : 4 8 10.5 2 Notes : 6.5 10 11 12; Prénom : José ; Nom : Para Prénom :Marie; Notes : 20 1 12.5 13 ; Nom : Juana

Il y a un élève par ligne. Le nombre de notes est quelconque mais toujours le même dans chaque ligne.

Le séparateur de champs est le point virgule. Dans un sous-champs, le séparateur est le signe deux points.

L’ordre des champs est quelconque. Dans un sous-champs l’information sur la catégorie précède celle sur la valeur.

Il y a un espace entre chaque note, mais pas forcément d’espace entre les champs ni entre la catégorie, les deux points et la valeur.

4.1 Récupérer les informations Ecrire la fonction

def infos(file):

"""retourne une liste de listes

chaque sous-liste contient le nom, le prénom et la liste des notes d'un élève

"""

[12]: # ***********

def normalize(l):

lc = l.split() return ' '.join(lc)

def notes(s):

ln = s.split()

return [float(n) for n in ln]

def traiter(l):

"""traitement d'une ligne"""

lc = l.split(';')#les champs for c in lc:

nc, vc = c.split(':') if 'Prénom' in nc:

p = normalize(vc) elif 'Nom' in nc :

n = normalize(vc) else :

les_notes = notes(vc)

(5)

return [n,p,les_notes]

def infos(file):

f = open(file,"r", encoding="utf8") res = []

l = f.readline()# 1ere ligne while l:

res.append(traiter(l))

l = f.readline()#ligne suivante f.close()

return res

4.1.1 Quelques manipulations pour comprendre [13]: l = "Nom: Dupont; Prénom : Pierre; Notes : 12 13"

l.split(";")

[13]: ['Nom: Dupont', ' Prénom : Pierre', ' Notes : 12 13']

[14]: n = ' Pierre de la Rigolade de \n la Poilade ' sn = n.split()

' '.join(sn)

[14]: 'Pierre de la Rigolade de la Poilade' [15]: e1,e2 = ' Prénom : Pierre'.split(":")

e1,e2

[15]: (' Prénom ', ' Pierre') [16]: e2.split()

[16]: ['Pierre']

[17]: ' 12.0 13'.split()

[17]: ['12.0', '13']

[20]: t = infos('notes') t

[20]: [['Hoareau', 'Jean', [10.0, 12.0, 6.0, 13.0]], ['Dupont', 'Pierre', [4.0, 8.0, 10.5, 2.0]], ['Para', 'José', [6.5, 10.0, 11.0, 12.0]], ['Juana', 'Marie', [20.0, 1.0, 12.5, 13.0]]]

(6)

[5]: def normalize(l):

lc = l.split() return ' '.join(lc)

normalize (' un nom et un autre nom') [5]: 'un nom et un autre nom'

4.2 Moyenne coefficientée

On utilise la fonction averagede numpy : [24]: from numpy import average

[11]: print(average([10,15]))#tous les coefs égaux

print(round(average([10,15],weights=[1,2]),1))#avec coefs 12.5

13.3

[12]: data = arange(9).reshape((3,3)) print(data)

print(average(data, axis=1, weights=[1,1,1]))#moyenne par ligne print(average(data, axis=0, weights=[1,1,1]))#moyenne par colonne [[0 1 2]

[3 4 5]

[6 7 8]]

[1. 4. 7.]

[3. 4. 5.]

Références

Documents relatifs

Exceptions : des pneus, des bleus Les noms terminés par ou ont leur pluriel en

Exceptions : bail, émail, corail, soupirail, travail, vitrail, vantail font leur pluriel en aux. Les noms terminés par x, s ou z ne changent pas au pluriel

Tout comme pour la courbe dans le cas d’une charge résistive, nous constatons une diminution de plus en plus importante de la tension secondaire en fonction de l’augmentation

o écrire, en respectant les critères d’évaluation, un texte court expliquant l’expression « Voir loin, c’est voir dans le passé », texte qui sera à rendre sur feuille pour

[9] Curves of low degrees on Fano varieties, in Birational Geometry, Rational Curves, and Arithmetic, F.. Tschinkel editors, Simons Symposia,

[r]

4 Écris en lettres chaque nombre entier indiqué dans le

Supposons M racine d'un polynôme à coecients entier de degré d ∈ J 0, 9 K et formons une contradiction entre la majoration de III.3 et la minoration qui résulte du théorème