如何编写一个Python程序来计算.dat文件的平均值?

时间:2012-03-17 08:15:06

标签: python

到目前为止,我有这个,但我不知道如何写.dat文件:

def main():
   fname = input("Enter filename:")
   infile = open(fname, "r")
   data = infile.read()
   print(data)

for line in infile.readlines():
   score = int(line)
   counts[score] = counts[score]+1
   infile.close()

total=0
  for c in enumerate(counts):
      total = total + i*c
      average = float(total)/float(sum(counts))
      print(average) 
 main()

这是我的.dat文件:

4
3
5
6
7

我的统计学教授希望我们学习Python来计算平均值和标准差。所有我需要知道的是如何做到这一点,然后我已经弄明白了。我想知道Python如何写入.dat文件中的每一行。有人能告诉我如何修复此代码吗?我以前从未做过编程。

我希望这个问题在主题上。我在mathstackexchange中问过这个并得到了一些敌意的回应。

2 个答案:

答案 0 :(得分:1)

我认为这应该可以解决问题:

def main():
    fname = input("Enter filename:")
    infile = open(fname, "r")

    numbers = []
    for line in infile:
        numbers.append(int(line))
    infile.close()

    average = float(sum(numbers))/len(numbers)
    print(average) 

main()

注意文件行的简化迭代。数字存储在numbers列表中,然后将它们的总和除以列表的长度以计算平均值。一切都在main()函数内完成,该函数在最后一行中调用。

答案 1 :(得分:0)

我不知道如何评论列夫的回答,我只是意识到平均值的计算就足够了。既然我现在已经完成了,你可能会想办法让标准差偏低。

def main(): 
    [...]
    sec_mom = 0
    for n in numbers:
        sec_mom = sec_mom + n**2

    var = sec_mom - average**2

    from math import sqrt
    std_dev = sqrt(var)

    print std_dev

这里[...]表示main()内部的内容,如上所述。此外,您可以在任何地方添加“print something ”,以便了解内容的内容。由于Python可以交互使用,也许可以尝试一次在Python解释器中插入一行代码,逐步尝试代码。