';功能';对象不可下标-Python
我试图用以下代码解决一项作业:';功能';对象不可下标-Python,python,Python,我试图用以下代码解决一项作业: array = [] total = 0 student = int(input("How many student in your class: ")) print("\n") for x in range(student): score = int(input("Input score {} : ".format(x+1))) while True: if 0 <= score <= 100:
array = []
total = 0
student = int(input("How many student in your class: "))
print("\n")
for x in range(student):
score = int(input("Input score {} : ".format(x+1)))
while True:
if 0 <= score <= 100:
break
score = int(input("Invalid score!!, please re-enter: "))
array.append(score)
print("\n")
def grade(score):
if scores >= 90:
grade ["A"] += 1
elif scores >= 80:
grade ["B"] += 1
elif scores >= 70:
grade ["C"] += 1
elif scores >= 60:
grade ["D"] += 1
else:
grade ["E"] += 1
print("Number of A: ",grade["A"](score))
print("Number of B: ",grade["B"](score))
print("Number of C: ",grade["C"](score))
print("Number of D: ",grade["D"](score))
print("Number of E: ",grade["E"](score))
array=[]
总数=0
student=int(输入(“你们班有多少学生:”)
打印(“\n”)
对于范围内的x(学生):
score=int(输入(“输入分数{}:”.format(x+1)))
尽管如此:
如果0=80:
等级[“B”]+=1
elif得分>=70:
等级[“C”]+=1
elif分数>=60:
等级[“D”]+=1
其他:
等级[“E”]+=1
打印(“A数:”,等级[“A”](分数))
打印(“B数:,等级[“B”](分数))
打印(“C数:,等级[“C”](分数))
打印(“D数:,等级[“D”](分数))
打印(“E的数量:,等级[“E”](分数))
但当我运行代码时:
学生人数:5人
输入分数1:90
输入分数2:80
输入分数3:70
输入分数4:60
输入分数5:50
回溯(最近一次呼叫最后一次):
文件“\Testing code.py”,第33行,在
打印(“A编号:”,A级)
TypeError:“function”对象不可下标错误是因为grade是一个函数对象,而您没有正确引用该对象。但还有很多错误。您的功能等级(分数)不会返回任何内容。在函数中引用“score”而不是“score”。然后再次引用函数名,但不是作为正确的对象,你没有做任何递归操作,只是名称不好 您可以做的可能是:
def grade(score, grade_track):
if scores >= 90:
grade_track["A"] += 1
elif scores >= 80:
grade_track["B"] += 1
elif scores >= 70:
grade_track["C"] += 1
elif scores >= 60:
grade_track["D"] += 1
else:
grade_track["E"] += 1
return grade_track
在某个时候,你会想要初始化grade_track字典,并用你的分数正确地填写它(我建议使用for循环)。小心命名。您将字典命名为与函数相同的名称,这会产生问题。如果只定义了
分数
,请注意使用诸如分数
之类的名称
我相信这或多或少就是你想要做的:
# a function
def make_grades(scores):
# a dictionary
grades = {"A":0, "B":0, "C":0, "D":0, "E":0}
for score in scores:
if score >= 90:
grades["A"] += 1
elif score >= 80:
grades["B"] += 1
elif score >= 70:
grades["C"] += 1
elif score >= 60:
grades["D"] += 1
else:
grades["E"] += 1
return grades
# make a dictionary object using your function
grade = make_grades(array)
# print values in your dictionary
print("Number of A:", grade["A"]))
print("Number of B:", grade["B"]))
print("Number of C:", grade["C"]))
print("Number of D:", grade["D"]))
print("Number of E:", grade["E"]))
显示,但值为0 A的编号:0 B的编号:0 C的编号:0 D的编号:0 E的编号:0