Nous avons un fichier .txt avec 3 colonnes; nom, taille et poids. Nous devons ajouter une 4ème colonne pour l'IMC (à partir d'une formule donnée) ainsi que trouver les min, max et moyenne de chaque catégorie.Comment ajouter un nouveau texte et des variables à un fichier .txt
Le texte provient d'un fichier local, "data.txt." Voici le texte (fait dans le bloc de code pour conserver le formatage pour l'imprimer):
Name Height(m) Weight(kg)
Joe 1.82 72.57
Mary 1.60 63.50
Dion 1.90 90.71
Kayla 1.72 66.31
Jose 1.78 70.23
Sofia 1.63 65.12
Erik 1.98 92.21
Sara 1.57 65.77
Voici le code que j'ai jusqu'à présent, qui le montre la plupart du temps complet, à l'exception de la colonne IMC:
in_file = open("data.txt","r")
th=0 #total height
tw=0 #total weight
tbmi=0 #total bmi
min_h=3.00
min_w=100.00
min_bmi=40
max_h=0
max_w=0
max_bmi=0
for line_str in in_file:
print(line_str,end="")
if 'Heigh' not in line_str:
a = float((line_str[12:16]))
b = float((line_str[23:27]))
bmi=(b/(a**2))
tbmi+=bmi
th += a
tw +=b
if min_h > a:
min_h = a
if min_w > b:
min_w = b
if min_bmi > bmi:
min_bmi = bmi
if max_h < a:
max_h =a
if max_w < b:
max_w =b
if max_bmi < bmi:
max_bmi = bmi
print("")
print('{:<12s}{:<12.2f}{:<12.2f}{:<12.2f}'.format("Average", th/8, tw/8, tbmi))
print('{:<12s}{:<12.2f}{:<12.2f}{:<12.2f}'.format("Max", max_h, max_w, max_bmi))
print('{:<12s}{:<12.2f}{:<12.2f}{:<12.2f}'.format("Min", min_h, min_w, min_bmi))
Tout ce que je dois faire est d'avoir une colonne avec l'en-tête BMI, et toutes les valeurs d'IMC ajoutées à chaque ligne_str, mais ne peut rien faire fonctionner, comme l'utilisation de readline() pour ignorer la première ligne, et I ' d fais mon propre en-tête. Je ne peux pas non plus imprimer un en-tête indépendant au-dessus de la ligne "for line_str in in_file:" pour une raison quelconque; dans ce cas, j'allais juste faire mon propre en-tête, puis imprimer les résultats dont j'avais besoin ligne par ligne avec le format dont j'avais besoin. Semble inefficace ...
Editer: La réponse d'Alessio a fait l'affaire! Je n'aurais pas pensé à ça!
Il peut être parce que vous avez ouvert le fichier en mode lecture. "in_file = open (" data.txt "," r ")" –
Que voulez-vous dire par "ne peut rien faire pour travailler"? Sûrement il imprime quelque chose ou vous donne un retraçage. –
Désolé ... Oui, Il imprime les valeurs dont j'ai besoin, telles que les moyennes, etc. Ce qui ne fonctionne pas, essaie readline() de sauter la première ligne de texte et de faire mon propre en-tête, ou d'imprimer un nouvelle ligne au-dessus du fichier texte (et puis j'allais juste imprimer chaque valeur que j'ai besoin chaîne par chaîne avec le formatage correct) mais il ne me laissera pas imprimer au-dessus de "line_str in_file" pour une raison quelconque – Marty