Python retour à la ligne
Résolu
Bonjour à tous.
Je débute en python et je ne connais aucun autre langage informatique.
Je fais une erreur que j'arrive pas à identifié sur l’exercice suivant:
Le fichier notes.txt contient les notes obtenues par des étudiants pour le cours de Python. Chaque ligne du fichier ne
contient qu’une note.
Créez un script Python qui lit chaque ligne de ce fichier, extrait les notes sous forme de float et les stocke dans une liste.
Le script réécrira ensuite les notes dans le fichier moyenne.txt avec une note par ligne suivie de « recalé » si la note est
inférieure à 10 et « admis » si la note est supérieure ou égale à 10. Toutes les notes seront écrites avec une décimale. À titre d’exemple, voici les 3 premières lignes attendues pour le fichier moyenne.txt :
1| 13.5 admis
2| 17.0 admis
3| 9.5 recalé
voici mon script:
voici le résulta:
13.5
admis
17.0
admis
9.5
recale
10.0
admis
16.5
admis
8.5
recale
18.5
admis
Voulez vous m'aider à comprendre mon erreur qui fait que python retourne à la ligne après la notes.
Merci
Je débute en python et je ne connais aucun autre langage informatique.
Je fais une erreur que j'arrive pas à identifié sur l’exercice suivant:
Le fichier notes.txt contient les notes obtenues par des étudiants pour le cours de Python. Chaque ligne du fichier ne
contient qu’une note.
Créez un script Python qui lit chaque ligne de ce fichier, extrait les notes sous forme de float et les stocke dans une liste.
Le script réécrira ensuite les notes dans le fichier moyenne.txt avec une note par ligne suivie de « recalé » si la note est
inférieure à 10 et « admis » si la note est supérieure ou égale à 10. Toutes les notes seront écrites avec une décimale. À titre d’exemple, voici les 3 premières lignes attendues pour le fichier moyenne.txt :
1| 13.5 admis
2| 17.0 admis
3| 9.5 recalé
voici mon script:
with open("notes.txt", "r") as fichier1, open("liste.py", "w") as fichier2:
for notes in fichier1:
fichier2.write("{}\n".format(float(notes)))
with open("liste.py", "r") as filin, open("moyenne.txt", "w") as fichier3:
for ligne in filin:
if float(ligne) < 10.0:
fichier3.write("{0}{1}\n".format(str(ligne), "recale"))
else:
fichier3.write("{0}{1}\n".format(str(ligne), "admis"))
voici le résulta:
13.5
admis
17.0
admis
9.5
recale
10.0
admis
16.5
admis
8.5
recale
18.5
admis
Voulez vous m'aider à comprendre mon erreur qui fait que python retourne à la ligne après la notes.
Merci
5 réponses
-
Bonjour,
Tu lis ton fichier liste.py et tu mets les lignes lues dans la variable ligne
donc à la fin de ligne, il y a forcément un \n lu dans le fichier, un retour à la ligne
IL faut donc tronquer ligne avant de l'exploiter, enlever le dernier caractère :
for ligne in filin: ligne = ligne[:-1]
un fichier .py, c'est un script Python, n'appelle pas tes fichiers de données comme ça ...