【发布时间】:2014-06-19 19:09:30
【问题描述】:
我是一名 Python 初学者,正在尝试编写一个程序,该程序允许用户输入个人姓名和考试成绩,我应该在找到迄今为止我已经能够编写程序的平均分后给一个分数,但是我在尝试调试它时遇到了困难。 我的程序运行良好,直到它开始计算平均值,它通常会显示一条错误消息说
"TypeError: 'float' object is not subscriptable"
有人能帮我解释一下为什么我的代码不起作用吗?提前感谢您的帮助!
def calcaverage(test1,test2,test3):
for count in range(numofstudent):
curraverage=((test1[count]+ test2[count]+ test3[count])/3)
if curraverage>= 90:
grade= "A"
return grade
else:
if curraverage >= 80 and curraverage < 90:
grade= "B"
return grade
else:
if curraverage >= 70 and curraverage < 80:
grade= "C"
return grade
else:
if curraverage < 70:
grade= "F"
return grade
numofstudent=int(input("How Many Students?: "))
students=[]
test1=[]
test2=[]
test3=[]
averagescore=[]
grade=[]
for count in range(numofstudent):
currstudent=input("Please enter name of student: ")
students.append(currstudent)
currstudenttest1= float(input("First test score?: "))
currstudenttest2= float(input("Second test score?: "))
currstudenttest3= float(input("Third test score?: "))
test1.append(currstudenttest1)
test2.append(currstudenttest2)
test3.append(currstudenttest3)
grade=calcaverage(test1,test2,test3)
averagescore.append(grade)
print([students], "your grade is " ,[grade])
【问题讨论】:
-
您遇到了什么实际错误或问题?
-
您可能对
if语句上的elifclause 感兴趣,您可以使用它来避免过度嵌套的if/elses。 -
我还看到了一些可能的问题,这些问题可能只是 SO 上的错误缩进。确保您想要在循环内的所有内容实际上都在循环内。还要确保你的变量在你尝试使用它们之前已经初始化......
-
我可以立即看到许多问题。对于初学者,当
curraverage尚未定义时,您正试图循环遍历range(curraverage)。
标签: python for-loop range function