• 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

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

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

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

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

[r]

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

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