这段代码有什么问题? TypeError:' float'对象没有属性' __ getitem __'

时间:2014-05-06 23:46:18

标签: list python-2.7 floating-point

在这个课程中,我想要每个学生3个科目的标记,4个学生。 但是当我运行这个时,我得到一个这样的错误:

Traceback (most recent call last):
 File "E:\Python\Lab\Lab6_3.py", line 12, in <module>
    for marks in marks[student]:
TypeError: 'float' object has no attribute '__getitem__'

我无法确定错误,使用len()函数查找列表中的元素数。 这是代码:

while True:
    try:
        marks=[]
        print "Enter marks of the 3 subjects of each student : "
        for student in range(4):
            marks.append(raw_input())
            marks[student]=map(float,marks[student].split(" "))
            if len(marks[student])!=3:
                print "Please enter marks of 3 subjects per each student"
        for student in range(4):
            total=0
            for marks in marks[student]:
                if marks<0:
                    print "You have entered a minus value"
                total+=marks
            print "Total of student %d = %f" %((student+1),total)
        break
    #except TypeError:
    #    print "You have entered an invalid input1"
    except ValueError:
        print "You have entered an invalid input2"
    except NameError:
        print "You have entered an invalid input3"
    except SyntaxError:
        print "You have entered an invalid input4"
    else:
        print "DONE !\n"

在这里,我跳过异常“TypeError”来识别故障。任何人都能说出这段代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

marks在第一次通过外循环时只是一个可迭代的。由于marks 也是您在内部循环中使用的名称,因此外部循环中不再存在iterable。

TL; DR:for循环不会在Python中创建新范围。