我们给出了一个带有3列的.txt文件;名称,身高和体重。我们需要为BMI添加第四列(来自给定的公式)以及查找每个类别的最小值,最大值和平均值。如何将新文本和变量添加到.txt文件
该文本来自本地文件“data.txt”。这里是(用于打印它的代码块使它保持格式化)文本:
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
这里是我到目前为止的代码,显示它基本完成,除BMI列:
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))
我需要做的就是有一个包含标题BMI的列,并将所有BMI值添加到每个line_str,但无法获得任何工作,例如使用readline()忽略第一行, d制作我自己的标题。由于某种原因,我也无法在“in_file:for line_str:”行上面打印独立标题;在这种情况下,我只是要制作自己的标题,然后将需要的格式一行一行地逐行打印出来。似乎效率低下...
编辑:Alessio的答案做了诡计!不会想到那个!
这可能是因为你已经打开了在读模式下的文件。 “in_file = open(”data.txt“,”r“)” –
“你不能得到任何工作”是什么意思?它当然会印上一些东西或给你一个回溯。 –
对不起,这是...它会打印我需要的值,比如平均值等等。什么都行不通,尝试使用readline()跳过第一行文本并制作自己的标题,或者打印在文本文件上方新建一行(然后我打算只打印每个字符串所需的字符串,但格式不正确)但是,由于某些原因,它不会让我在“for_file中的line_str”上面打印 – Marty