I have this so far but I don’t know how to write over the .dat file:
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()
Here is my .dat file:
4
3
5
6
7
My statistics professor expects us to learn Python to compute the mean and standard deviation. All I need to know is how to do the mean and then I’ve got the rest figured out. I want to know how does Python write over each line in a .dat file. Could someone tell me how to fix this code? I’ve never done programming before.
To answer your question, as I understand it, in three parts:
How to read the file in
in your example you use
which reads the entire contents of the file into a string and takes you to the end of file. Therefore the following
will read nothing more. You should omit the first read().
How to compute the mean
There are many ways to do this in python – more or less elegant – and also I guess it depends on exactly what the problem is. But in the simplest case you can just sum and count the values as you go , then divide sum by count at the end to get the result:
The try/except part is just in case you have lines or characters in the file that can’t be turned into floats, these will be skipped.
How to write to the .dat file
Finally you seem to be asking how to write the result back out to the d.dat file. Not sure whether you really need to do this, it should be acceptable to just display the result as in the above code. However if you do need to write it back to the same file, just close it after reading from it, reopen it for writing (in ‘append’ mode so output goes to the end of the file), and output the result using write().