Как мне написать программу на Python, которая вычисляет среднее значение из файла .dat? - PullRequest
0 голосов
/ 17 марта 2012

У меня пока что есть, но я не знаю, как записать поверх файла .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.Может кто-нибудь сказать мне, как исправить этот код?Я никогда не занимался программированием.

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Чтобы ответить на ваш вопрос, насколько я понимаю, в трех частях:

Как прочитать файл в

в вашем примере вы используете

infile.read ()

, который считывает все содержимое файла в строку и переносит вас в конец файла. Поэтому следующее

infile.readlines ()

больше ничего не будет читать. Вы должны опустить первое чтение ().

Как вычислить среднее значение

Есть много способов сделать это в 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()

Попытка / исключение используется только в том случае, если в файле есть строки или символы, которые нельзя преобразовать в числа с плавающей точкой, они будут пропущены.

Как записать в файл .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()
0 голосов
/ 17 марта 2012
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 не так плохи в математике, как вы думаете.На это можно было бы легко ответить.(А может и лучше)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...