对于文件:元组列出的问题:找不到在哪里我犯了错误
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]',注意,这是一个*列表文字*。如果你只有逗号,那是一个元组... –