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行的可订阅。我不明白为什么在将数字附加到数据列表之前将数字转换为整数。有人可以帮忙吗?我清楚了吗?
答案 0 :(得分:1)
问题在于,当您使用data
中的data.insert
进行迭代时,您正在修改calculate_grades
列表。这导致循环的第二次迭代,将前一次迭代中的grade
值看作line
,而不是它期望的整数列表。
我不完全明白你要做什么,所以我不能直接建议解决方案。也许您应该为输出创建单独的列表,或者在适当的位置修改line
,而不是将新项目插入data
。
答案 1 :(得分:1)
具体问题是因为数据中存在浮动(最终)
for line in data:
total_points = sum(line[1:6])
grade = get_grade(total_points)
data.insert(0,total_points)
data.insert(1,grade)
因为您将其插入列表中,因为等级'
一般的问题是你在迭代它时修改你的列表('数据'),这是一个坏主意 - 你的逻辑很难读取,并且很容易循环。
答案 2 :(得分:0)
呃,问题是第10行的line[1:6]
部分。变量line
是一个浮点数,所以你不能拿一个子列表。