繁体   English   中英

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

[英]How do I write a Python program that computes the average from a .dat file?

到目前为止,我已经知道了,但是我不知道如何覆盖.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中问了这个问题,并得到了一些敌对的回应。

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

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()函数内部完成,该函数在最后一行中调用。

我不知道如何评论列夫的答案,我只是意识到平均值的计算就足够了。 既然我现在已经做完了,您可能会偷看一种方法来获得下面的标准偏差。

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()内部的内容。 此外您可以添加“打印东西 ”任何你想要的,以了解什么是那里面的东西 而且由于可以交互使用Python,因此也许可以尝试一次将一行代码插入Python解释器中,逐步尝试自己编写代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM