Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';功能';对象不可下标-Python_Python - Fatal编程技术网

';功能';对象不可下标-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