我正在尝试计算字典中的平均分数,但是,它为每个学生返回的平均分数为零
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]}
答案 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
。