對於文件:元組列出的問題:找不到在哪裏我犯了錯誤
Year Grade
2000 100
2002 95
2001 88
2012 99
2000 66
等等,我已經創建了一個會計算每次年級的平均值的函數。然而,我發現的是,不是最終得到一個列表,而是不斷得到一個元組。
我必須得到一個列表而不是元組才能通過斷言測試。
years, average_grades = [],[]
d = {}
with open(file,'r') as f:
next(f)
for line in f:
year, grade = (s.strip() for s in line.split(','))
if year in d:
d[year][0] += int(grade)
d[year][1] += 1
else:
d[year] = [int(grade),1]
for year, grades in d.items():
years.append(int(year))
average_grades.append(float(grades[0])/grades[1])
years, average_grades = zip(*sorted(zip(years, average_grades), key= lambda p: p[0]))
return years, average_grades
這個函數實際上給了我
年, 級2000,83 2001年,88 2002年,95 2012年,99
事情與此類似。它給了我每年的平均值。然而,它應該是有序的(按年),所以我已經完成了最後一步。
應該通過此:
years_answer = [I + 2000爲i的範圍(0,5)] assert_equal(年,years_answer)
錯誤我得到:
AssertionError: (2000, 2001, 2002, 2003, 2004, 2005, 2006[62 chars]2017) != [2000, 2001, 2002, 2003, 2004, 2005, 2006[62 chars]2017]
有沒有解決這些問題的建議?
它返回一個「元組」,因爲你明確*返回一個元組*,這就是'return years,average_grades'的意思......更重要的是,你需要什麼*輸出?它是不是'返回[年,average_grades]'? –
有沒有什麼好方法可以返回列表而不是元組,同時確保計算結果爲真? –
咦?再一次,我不知道你想要什麼輸出,但是隻要通過你的代碼,如果你想返回一個列表,你只需要'return [years,average_grades]',注意,這是一個*列表文字*。如果你只有逗號,那是一個元組... –