到目前为止,我有这个,但我不知道如何写.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文件中的每一行。有人能告诉我如何修复此代码吗?我以前从未做过编程。
答案 0 :(得分:0)
fname = input("Enter filename:")
infile = open(fname, "r")
data = infile.readline() #Reads first line
print(data)
data = infile.readline() #Reads second line
print(data)
你可以把它放在一个循环中。
此外,这些值将在Strings
每次使用float(data)
将其转换为浮点数时出现。
另外,StackOverflow的那些人并没有你想象的那么糟糕。这可以很容易地在那里得到解答。 (也许是以更好的方式)
答案 1 :(得分:0)
按照我的理解回答你的问题,分三部分:
如何阅读
中的文件在您的示例中使用
infile.read()
将文件的全部内容读入字符串并将您带到文件末尾。因此以下
infile.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文件。不确定您是否真的需要这样做,只需在上面的代码中显示结果即可。但是,如果你确实需要将它写回同一个文件,只需在读取后将其关闭,重新打开它进行写入(在'append'模式下输出到文件的末尾),然后使用write输出结果( )。
outfile = open("d.dat","a")
outfile.write("\naverage = final total / number of data points = " + str(total/count)+"\n")
outfile.close()