2012-03-17 70 views
0

我有這到目前爲止,但我不知道如何寫在.dat文件:如何編寫一個計算平均值來自.dat文件的Python程序?

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

但是這是爲我的統計類。這對我的理解在課堂上表現很好有關。感謝您的參考。 – 2012-03-17 07:39:58

+1

這不是一個數學問題。你可能會試圖用包含食譜的文件來做IO文件。這會促使你在烹飪現場問這樣一個問題嗎? – 2012-03-17 07:47:40

+0

對不起。我不會在這裏問一個與編程有關的問題。 – 2012-03-17 07:54:48

回答

0

要回答你的問題,據我瞭解,在三個部分:

如何讀取

文件在你的例子中,你使用

infile.read()

讀取該文件的全部內容到一個字符串和Ta kes你到檔案的最後。因此,以下

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 /除部分只是如果你有行或文件中的字符不能變成浮動,這些將被跳過。

如何寫.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
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的傢伙不像你想象的那麼糟糕。這可以很容易地在那裏回答。 (和以更好的方式也許)