我正在嘗試打開兩個檔案并收集 2010 年至 2019 年的資訊,并僅報告該年索賠的平均值和標準差
mean_file = open('data/mean.txt', 'r')
std_file = open('data/std.txt', 'r')
count = 2009
for line in std_file:
std = float(line)
for line in mean_file:
mean = float(line)
count = 1
print('Year',count, 'Mean:', mean, 'Standard Deviation:', std)
mean_file.close()
std_file.close()
我有上面的代碼。我得到的輸出是
Year 2019 Mean: 217557.4 Standard Deviation: 82296.33
Year 2019 Mean: 217557.4 Standard Deviation: 77808.0
Year 2019 Mean: 217557.4 Standard Deviation: 66939.77
Year 2019 Mean: 217557.4 Standard Deviation: 65486.56
Year 2019 Mean: 217557.4 Standard Deviation: 59126.12
Year 2019 Mean: 217557.4 Standard Deviation: 58712.14
Year 2019 Mean: 217557.4 Standard Deviation: 55465.54
Year 2019 Mean: 217557.4 Standard Deviation: 44621.54
Year 2019 Mean: 217557.4 Standard Deviation: 47821.1
Year 2019 Mean: 217557.4 Standard Deviation: 43170.7
每次我改變縮進的位置,它都會給出不同的答案。我希望平均值和標準偏差同時列印在同一行,就像下面的輸出一樣。我希望輸出如下所示。如何使它列印完全像下面的輸出?
Year 2010 Mean: 455692.98 Standard Deviation: 82296.33
Year 2011 Mean: 409110.4 Standard Deviation: 77808.0
Year 2012 Mean: 372226.67 Standard Deviation: 66939.77
Year 2013 Mean: 341826.79 Standard Deviation: 65486.56
Year 2014 Mean: 306567.67 Standard Deviation: 59126.12
Year 2015 Mean: 276956.5 Standard Deviation: 58712.14
Year 2016 Mean: 263900.21 Standard Deviation: 55465.54
Year 2017 Mean: 243116.25 Standard Deviation: 44621.54
Year 2018 Mean: 220894.98 Standard Deviation: 47821.1
Year 2019 Mean: 217557.4 Standard Deviation: 43170.7
uj5u.com熱心網友回復:
for sline, mline in zip(std_file, mean_file):
std = float(line)
mean = float(line)
count = count 1
print('Year',count, 'Mean:', mean, 'Std:', std)
uj5u.com熱心網友回復:
編輯:道歉,犯了一個錯誤。我知道你從哪里來。除縮進外,以下所有要點仍然適用。要修復此錯誤,您應該使用zip,它允許您一次迭代兩個檔案:
with open('std.txt', 'r') as std_file:
with open('means.txt', 'r') as mean_file:
for line in zip(std_file,mean_file):
std = float(line[0])
mean = float(line[1])
count = 1
print('Year',count, 'Mean:', mean, 'Standard Deviation:', std)
這給了我們:
Year 2010 Mean: 455692.98 Standard Deviation: 82296.33
Year 2011 Mean: 409110.4 Standard Deviation: 77808.0
Year 2012 Mean: 372226.67 Standard Deviation: 66939.77
Year 2013 Mean: 341826.79 Standard Deviation: 65486.56
Year 2014 Mean: 306567.67 Standard Deviation: 59126.12
Year 2015 Mean: 276956.5 Standard Deviation: 58712.14
Year 2016 Mean: 263900.21 Standard Deviation: 55465.54
Year 2017 Mean: 243116.25 Standard Deviation: 44621.54
Year 2018 Mean: 220894.98 Standard Deviation: 47821.1
Year 2019 Mean: 217557.4 Standard Deviation: 43170.7
一些可以使您的代碼更易于閱讀,從而更易于除錯的快速指標:使用背景關系管理器(即with陳述句),并且不要在嵌套的 for 回圈中重用迭代變數。
使用背景關系管理器會自動打開和關閉檔案,而且通常更安全。你可以這樣做:
with open('data/std.txt', 'r') as std_file:
with open('data/mean.txt', 'r') as mean_file:
#do stuff
此外,line在兩個 for 回圈中重用不僅是不好的做法,而且不可避免地會導致程式重寫您仍然想要的變數。最后,您的縮進是錯誤的:您僅在迭代所有均值檔案后才列印,因此將始終獲得相同的均值輸出。把這一切放在一起,我們有。
count = 2009
with open('data/std.txt', 'r') as std_file:
with open('data/mean.txt', 'r') as mean_file:
for line_std in std_file:
std = float(line_std)
for line_mean in mean_file:
mean = float(line_mean)
count = 1
print('Year',count, 'Mean:', mean, 'Standard Deviation:', std)
哪個應該按預期作業。 固定代碼見上文
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446355.html
標籤:Python python-3.x 文件 for循环 读取文件
