Python:TypeError:“float”对象不是subscriptab

2021-06-14 22:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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行。我不明白为什么在将数字追加到数据列表之前要将它们转换成整数。有人能帮忙吗?我说得够清楚了吗?

3条回答
网友
1楼 ·

问题是,在遍历列表时,您正在使用calculate_grades中的data.insert修改该列表。这将导致循环的第二次迭代,以将上一次迭代的grade值视为line,而不是预期的整数列表。

我不完全明白你想做什么,所以我不能直接提出解决办法。也许您应该为输出创建一个单独的列表,或者就地修改line,而不是在data中插入一个新项。

网友
2楼 ·

具体的问题是因为数据中有浮动(最终)

for line in data:
    total_points = sum(line[1:6])
    grade = get_grade(total_points)
    data.insert(0,total_points)
    data.insert(1,grade)

因为你把它作为“等级”插入你的列表

一般的问题是,在遍历列表(“数据”)时,您正在修改列表(“数据”),这是一个坏主意-您的逻辑充其量很难读取,而且很容易永远循环。

网友
3楼 ·

呃,问题是第10行的部分line[1:6]。变量line是浮点数,因此不能接受子列表。

相关问题