def get_data(fp):
data = []
for line in fp:
line_list_ints = [int(number) for number in line.split()]
data.append(line_list_ints)
return data
def calculate_grades(data):
for line in data:
total_points = sum(line[1:6])
grade = get_grade(total_points)
data.insert(0,total_points)
data.insert(1,grade)
return data
我得到了TypeError:'float‘对象是不可订阅的第10行。我不明白为什么,因为我在将数字附加到数据列表之前将它们转换为整数。有人能帮上忙吗?我说得够清楚了吗?
发布于 2015-03-24 00:59:11
问题在于,您在使用calculate_grades
中的data.insert
对data
列表进行迭代时修改了该列表。这导致循环的第二次迭代将上一次迭代的grade
值视为line
,而不是它期望的整数列表。
我不完全理解你想做什么,所以我不能直接建议一个解决方案。也许您应该为输出创建一个单独的列表,或者在适当的位置修改line
,而不是在data
中插入新的项。
发布于 2015-03-24 01:02:29
具体问题是因为数据(最终)中存在浮点数。
for line in data:
total_points = sum(line[1:6])
grade = get_grade(total_points)
data.insert(0,total_points)
data.insert(1,grade)
因为你把它插入到你的列表中,作为‘等级’
一般的问题是,你在迭代的同时修改了列表('data'),这是一个坏主意--你的逻辑充其量是很难读懂的,而且很容易永远循环。
发布于 2015-03-24 00:50:20
嗯,问题是第10行的部分line[1:6]
,变量line
是一个浮点型的,所以你不能带子列表。
https://stackoverflow.com/questions/29223059
复制