Statistics 如何编写一个Python程序,从.dat文件计算平均值?

Statistics 如何编写一个Python程序,从.dat文件计算平均值?,statistics,Statistics,到目前为止,我有这个,但我不知道如何在.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.cl

到目前为止,我有这个,但我不知道如何在.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()
4
3
5
6
7
这是我的.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()
4
3
5
6
7
我的统计学教授希望我们学习Python来计算均值和标准差。我所需要知道的就是如何做的意思,然后我已经知道了其余的。我想知道Python是如何在.dat文件中的每一行上进行写操作的。有人能告诉我如何修复这个代码吗?我以前从未做过编程

fname = input("Enter filename:")
infile = open(fname, "r")
data = infile.readline() #Reads first line
print(data)
data = infile.readline() #Reads second line
print(data)
你可以把它放在一个循环中

此外,每次使用
float(data)
将这些值作为
Strings
转换为float


另外,StackOverflow的人数学也不像你想象的那么差。这本可以很容易地在那里得到回答。(也许用更好的方式)

按照我的理解,回答你的问题分为三个部分:

如何在中读取文件

在您的示例中,您使用

infle.read()

它将文件的全部内容读入一个字符串,并将您带到文件的末尾。因此,以下

infle.readlines()

我不会再读了。您应该省略第一个read()

如何计算平均数

在python中有很多方法可以做到这一点——或多或少是优雅的——而且我猜这完全取决于问题所在。但在最简单的情况下,您可以在运行时对值进行求和和和计数,然后在最后将求和除以计数,得到结果:

infile = open("d.dat", "r")
total = 0.0
count = 0
for line in infile.readlines():    
    print ("reading in line: ",line)
    try:
        line_value = float(line)
        total += line_value
        count += 1
        print ("value = ",line_value, "running total =",total, "valid lines read = ",count)
    except:
        pass #skipping non-numeric lines or characters

infile.close()
try/except部分只是为了防止文件中的行或字符无法转换为浮动,这些行或字符将被跳过

如何写入.dat文件

最后,您似乎在问如何将结果写回d.dat文件。不确定是否真的需要这样做,只显示上面代码中的结果应该是可以接受的。但是,如果确实需要将它写回同一个文件,只需在读取后关闭它,重新打开它进行写入(在“追加”模式下,以便输出到文件的末尾),然后使用write()输出结果


但这是我的统计课。这与我在课堂上取得好成绩的理解有关。谢谢你的参考。这不是一个数学问题。您还可以尝试使用包含配方的文件执行文件IO。这会促使你在烹饪现场问这样的问题吗?对不起。我不会在这里问任何与编程相关的问题。为什么这里的人不把问题移到StackOverflow上呢?@Karl:只有版主才能这样做,你应该能够标记问题以引起他们的注意。