3つの列を持つ.txtファイルがあります。名前、身長、および体重。 BMIの4番目の列(特定の式から)を追加するだけでなく、各カテゴリの最小、最大、平均を見つける必要があります。新しいテキストと変数を.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()の使用や、自分のヘッダーを作る。何らかの理由で、 "in_file:line_str"行の上に独立ヘッダを印刷することもできません。この場合、私は自分の見出しを作って、必要な書式で行ごとに必要な結果を印刷します。非効率的だと思われます...
編集:アレッシオからの答えがトリックでした!それを考えなかっただろう!
あなたは、読み取りモードでファイルを開いているので、それがかもしれません。 "in_file = open(" data.txt "、" r ")" –
"何もできない"とはどういう意味ですか?確かに何かを印刷したり、トレースバックを与えたりします。 –
申し訳ありません...はい、平均値などの必要な値を出力します。動作しないのは、テキストの最初の行をスキップして自分のヘッダーを作成するreadline()、または(そして、私は文字列で必要な各値を正しい書式で文字列で出力するつもりでしたが)何らかの理由で "in_fileのline_str"の上に印刷させません。 – Marty