在这个课程中,我想要每个学生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”来识别故障。任何人都能说出这段代码有什么问题吗?
答案 0 :(得分:0)
marks
在第一次通过外循环时只是一个可迭代的。由于marks
也是您在内部循环中使用的名称,因此外部循环中不再存在iterable。
TL; DR:for
循环不会在Python中创建新范围。