簡體   English   中英

如何讓它在同一行打印輸出?

[英]How do I make it print the outputs on same line?

我正在嘗試打開兩個文件並收集 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()

我有上面的代碼。 我得到的output是

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

每次我更改縮進的 position 時,它都會給出不同的答案。 我希望平均值和標准偏差同時打印在同一行上,就像下面的 output 一樣。 我希望 output 如下所示。 我如何讓它像下面的 output 一樣打印出來?

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

編輯:抱歉,犯了一個錯誤。 我知道你是從哪里來的。 除了縮進之外,以下所有要點仍然適用。 要修復此錯誤,您應該使用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

此外,在兩個 for 循環中重復使用line不僅是不好的做法,而且將不可避免地導致程序重寫您仍然需要的變量。 最后,你的縮進是錯誤的:你只是在迭代所有的平均文件后打印,因此對於平均來說總是會得到相同的 output。 把這一切放在一起,我們有。

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)

哪個應該按預期工作。 參見上面的固定代碼

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM