2015-04-23 62 views
-3

我有一個文件,每個人3分數。我想使用這些分數,並得到其中所有3個的平均值。分數由選項卡和降序分隔。例如:對文件中的平均分進行排序。列和降序

jack 10 6 11 
claire 3 7 3 
conrad 5 4 6 

這些人會出來,平均:

jack 9 
conrad 5 
claire 4 

我希望這些能夠打印到Python Shell中,但是不會被保存到文件中。

with open("file.txt") as file1: 
 
    d = {} 
 
    for line in file1: 
 
     column = line.split("/t") 
 
     names = column[0] 
 
     scores = int(column[1].strip())

我做了一個開始,但我發現自己被卡住,我不知道如何繼續進行編碼。有沒有人有辦法解決嗎?

回答

0

使用集合或字典的概念。兩者都是相似的:它們只能包含一個特定的「密鑰」一次。

所以,如果你創建了一個存儲在每個分數的內容的字典,使用「名稱」作爲一個鍵,就可以創建一個看起來是這樣的數據結構:

student_scores = {'dave': [9, 8, 11], 'john': [12, 7, 10], ... } 

該數據結構將你可以在第二步中分析一下,很容易計算平均值。

然後編寫一個遍歷student_scores的循環,並對每一個進行平均。可以遍歷這樣的詞典:

for name, list_of_scores in student_scores.items(): 
    # do something with name & list... 

希望給你一些想法,不只是編碼爲您!

另請參見:當然,請記住,「平均」定義爲數字列表的sum除以數字列表的len。幸運的是,這兩個built-in functions存在於Python中,並在列表上運行!

0

您可以使用字典。

scores = {} 
with open("class6Afile.txt") as file1: 
    for line in file1: 
     column = line.split("/t") 
     names[column[0]] = column[1:] 

後,您可以遍歷鍵,值對如圖here並找到平均值每一套針對相應的名稱值。

此外,您不能像您所做的那樣將名稱存儲在數組中。我假設名字是一個數組,所以正確的做法是。

names.append(column[0]) 
0
with open("class6Afile.txt") as file1: 
d = {} 
class Person: 
def __init__(self, name, average): 
     self.name = name 
     self.average = average 
for line in file1: 
    column = line.split("/t") 
    name = column[0] 
    average = (int(column[1].strip()) + int(column[2].strip()) + int(column[3].strip()))/3 
d.append(Person(name,average)) 
d.sort(key=lambda x: x.average, reverse=True) 

你期望的結果存在於列表的頂部!

+0

#ignore語法錯誤,如果存在!我不是Python開發者:P –

相關問題