我正在尝试计算字典中的平均分数,但是,每个学生返回的平均分数为零

时间:2019-02-19 16:27:59

标签: python

我正在尝试计算字典中的平均分数,但是,它为每个学生返回的平均分数为零

COED:

def student_avrage(student_l):
     lib = {}
     for i in student_l:
         if i[0] in lib.keys():
             lib[i[0]].append(int(i[1]))
     else:
             lib[i[0]] = [int(i[1])]
     totle_score =0
     for key, value in lib.items():
             if len(value) > 1:
                 for itm in value:
                     totle_score += itm
            quantityofscore =  len(value)
            avrage = totle_score/quantityofscore
            lib[key] = [avrage]
    print(lib)

student_l = [[“ Ali”,20],[“ Bion”,25],[“ Jack”,“ 30”],[“ Diane”,“ 50”]] student_avrage(student_l)

结果:

{'Ali': [0.0], 'Bion': [0.0], 'Jack': [0.0], 'Diane': [0.0]}

2 个答案:

答案 0 :(得分:1)

问题在于,当学生的得分不超过一个时,因为您的得分为this._router.navigate(['get', 'book', 1234])

下面应该为您解决这个问题

if len(value) > 1

具有以下输出: inputDict = [["Ali", 20],["Bion",25],["Jack",30],["Diane",50]] def student_avrage(inputDict): dic = {} for i in inputDict: if i[0] in dic.keys(): dic[i[0]].append(int(i[1])) else: dic[i[0]] = [int(i[1])] return dic dic = student_avrage(inputDict) for key, value in dic.items(): totle_score = 0 # this bit here needs to go # if len(value) > 1: for itm in value: totle_score += int(itm) quantityofscore = len(value) avrage = totle_score/quantityofscore dic[key] = [avrage] print(dic)

答案 1 :(得分:0)

问题出在以下if语句上:

if len(value) > 1:

在您的示例中,所有这些value列表的长度都将恰好为一个。结果是,您永远不会循环访问它们,并将它们添加到总计中,这些值是在0处初始化的。因此,这就是为什么您的总数(以及因此的平均值)为0的原因。

只需删除if语句,我认为您应该没问题。 (尽管我没有尝试过代码,所以可能还有其他问题。)

哦,就像@KenHBS在他的评论中说的那样,请确保您所有的值都是int,或者在尝试添加它们之前将它们转换为int