gpt4 book ai didi

Python 在函数内使用 For 循环

转载 作者:行者123 更新时间:2023-11-28 22:49:43 25 4
gpt4 key购买 nike

我是一名 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])

最佳答案

来了一段艰难的爱情。

这里有多个问题。一般来说,你需要学会逐行思考你的程序,就像你是 CPU 一样,并弄清楚你希望在每一步发生什么。然后您需要排除错误,直到实际 CPU 执行的操作等于您想要的。

在第二行(for 循环)中,变量“curraverage”是未定义的,因为它直到几行之后才被定义。无论如何,这是错误的变量;你想遍历所有学生,所以你需要范围(numofstudent)。

在下一行中,“test”未定义。你的意思是“test3”。如果您想学习编程,您就是不能让自己犯这些类型的错误。

变量 curraverge 看起来像是打字错误,但实际上并非如此。想个更好的名字,不难。

在第 5 行中,averagescore(在下面被声明为全局的,并且是一个列表)现在被重新声明为局部的并绑定(bind)到一个 float 。因此,您不能在第 6 行附加到它。第 5 行应该简单地丢弃,它除了创建一个错误外什么都不做。

行 grade[count] 没有做任何事情。您需要调用 grade.append 来构建成绩列表。但由于您尚未计算成绩,因此此处不包含此类行。

接下来您将 averagescore 与 90 和 80 等进行比较,但这又是错误的变量。这是您在下面声明的列表。在这里,您需要一个学生的分数(即平均分数)。

然后你从循环内部返回,导致函数在你计算了一个以上的成绩之前退出。这些返回都不应该在那里。

我可以继续。你需要对你正在做的事情更加小心。请记住,计算机是非常愚蠢的——它们完全按照被告知的去做,不管你是否希望它们这样做。

祝你好运。

关于Python 在函数内使用 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23439326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com