2016-12-07 35 views
0

我正在嘗試從已打開並作爲列表讀取的文件中查找平均GPA。該文件包含學生姓名,年齡和GPA(例如2.8),用逗號分隔,每個學生都有自己的行。我在逗號分割,以便token[3]成爲GPA。當我輸入代碼時,我收到Float object is not iterable錯誤。如何浮動和/或定義字符串(token[3]),以便我可以執行數學函數,如添加和分割?如何浮動從Python 3.5中的文件中讀取的列表元素?

list=[] 
f=open(file, 'r') 
Sum = 0 
for line in range(f): 
    line=line.strip() 
    token=line.split(',') 
    list.append(token) 
    print (sum(float(token[3]))) 
+0

的錯誤在這裏是你叫'sum'(需要一個可迭代的colle作爲一個論點)在一個浮動。目前還不清楚你實際打印的內容。每行的GPA值?運行總和? – Tim

+0

問題是總結() – Qwerty

+0

請張貼一些簡單的數據,即使你編碼工作,爲什麼你只是一個浮點數? –

回答

0

什麼像這樣(你可以希望擴展):

import statistics 

gpa_grades = [] 
with open('grades.txt') as file: 
    for line in file: 
     gpa_grades.append(float(line.split(',')[3].strip())) 

print("The average gpa is %f" % (sum(gpa_grades)/float(len(gpa_grades)))) 
print("The median gpa is %f" % statistics.median(gpa_grades)) 

例grades.txt:

Bob,Smith,18,2.8 
Simon,King,19,3.6 
Jane,Doe,16,4.0 

輸出:

The average gpa is 3.466667 
The median gpa is 3.600000 
+0

謝謝!這有很大幫助。我沒有想到在追加行中浮動令牌。 –

相關問題