从文本文件读取数据时,必须使用append Python

2024-04-16 17:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须创建一个程序,读取一个文本文件长度的董事会。我必须找到并打印这些长度的平均值。然后我要打印一张长度表和它们与平均值的差异。然后我需要计算有多少差异>;0.10.

到目前为止,我已经能够找到董事会的平均值,并且我能够计算出超过>;0.10. 但我不知道如何将长度和差异添加到一个列表中,以便能够打印每个长度旁边的差异

代码:

dif = 0
total = 0
count = 0
avg = 0
difcount = 0
boards = []
with open("boards.txt", "r") as fo:
    for line in fo:
        length = float(line)
        total += length
        count += 1
        avg = total/count
        dif = length - float(avg)
        if dif > float(0.10):
            difcount += 1
    print("Average:", round(avg,2))
    for line in fo:
        print(length, dif)
    print("Number of boards > 0.10 from average:", difcount)

输出:

average: 7.97
Number of boards > 0.10 from average:3

我不知道如何打印我的长度和差异表

Length    Difference
#         #
#         #
# and so on

Tags: countline差异floatlengthavg平均值total
3条回答

你的计算顺序不对。在知道输入的平均值之前,你不能做任何差异。目前,没有办法标记第一块板,因为此时的avg只不过是第一块板的长度

您需要分步骤处理此问题:

  1. 将所有数据读入一个列表
  2. 计算平均值
  3. 回顾清单,对照平均值检查每一项

在第三步中,您应该可以轻松地生成输出

你能从那里拿走吗

我不认为您的长度变量是实例化时,您试图打印它。 您可以创建一个元组数组来保存lengthdif

for line in fo:
boards.append((length, dif)) for item in boards: print(item)

这样你就可以在阅读完文本文件后得到它们

普劳恩的回答是对的,我认为你没有正确计算平均数

我认为你应该先把所有的板循环一遍,然后把它们的长度存储在一个列表中

board_lengths = []
with open("boards.txt", "r") as fo:
    for line in fo:
        board_lengths.append(float(line))

在你做了这些之后,你可以总结这个列表来创建你的意思

import numpy as np
mean_board_length = np.mean(board_lengths)

你可以找到它们的区别

differences = [l - mean_board_length for l in board_lengths]

以及差值大于0.1的次数

times = np.sum([d>0.1 for d in differences])

相关问题 更多 >