python - 如何计算每组的分数并推导出每组的平均分,
问题描述
更新的问题和代码!30.01.2021
这个问题顺理成章地出现在这个问题之后 -如何在记录中找到一个单独的属性并在它上面形成一个单独的集合?
我需要计算每组的平均分。在用户@itprorh66 建议的代码中,我添加了一个计算平均分数的公式(它有效)和一个分数的条件搜索运算符。
@itprorh66 先生,
我决定稍微修改您的代码以尝试自己解决我的问题。但到目前为止还没有成功。
此代码块正在工作
def srtgr(self):
counthrees=0
countfours=0
countfives=0
midl_average=0
gl=dict() #Dictionary for the group
for s in studinfos:
sd=gl.pop(s.numbgroup,dict())
sd[s.surn]=[s.markgeometry,s.markalgebra,s.markinformatika]
gl[s.numbgroup]=sd
for k,v, in gl.items():
s=f'Group: {k}: \n'
for stdn,grds in v.items():
s+=f' {stdn}\t{grds[0]},{grds[1]},{grds[2]} \n'
print(s)
这是中的第二部分def srtgr
。在此代码块中,我尝试计算每组中的成绩数(3,4 和 5),然后找到每组的平均成绩。在循环的帮助下,我开始遍历字典并在分支运算符的帮助下开始计算每个组的分数,但这就是我在编写这段代码时的想法。实际上,什么都没有开始,也不算数
for grds in gl.items():
if grds.markgeometry==3:
counthrees+=1
if grds.markalgebra==3:
counthrees+=1
if grds.markinformatika==3:
counthrees+=1
if grds.markgeometry==4:
countfours+=1
if grds.markalgebra==4:
countfours+=1
if grds.markinformatika==4:
countfours+=1
if grds.markgeometry==5:
countfives+=1
if grds.markalgebra==5:
countfives+=1
if grds.markinformatika==5:
countfives+=1
midl_average = (counthrees+countfours+countfives)/3
for kk,grds1 in gl.items():
grds=f'Group: {kk}: {grds1}\n'
print(grds)
print(*sorted(gl, key = midl_average, reverse = True))
输入数据
我的名声很小,我无法从我的计算机中添加图片,我发送了链接,我的输入数据在哪里,我在课堂上添加的内容以及我的对象类集合如何在控制台中显示。和组别
如何使平均成绩显示在每组学生列表之后的底部?或者只是计算每组的平均分数并将其输入另一个字典?
我弄清楚了字典中值的排序。
我尝试制作第二本词典并将组放在那里,然后在单独的评估单元中计算它 - 它没有用。然后我读到,在 Python 中,您可以将字典添加到字典中。结果,我试图将现有字典添加到新字典中,但不明白如何进行。因为无论如何都必须计算成绩
您不能使用任何辅助类,只能使用一个类。
解决方案
dict.items() 返回字典中的键值对。根据代码,v
字典有两种数据
- key 是学生编号,value 是成绩列表。
- key 是一个学生 numbgroup,value 是一个包含空列表的列表。
我最好的猜测是您不想要该字典中的第二种类型的东西。我不知道红球的东西应该做什么,但目前你把它设为一个空列表,把它放在一个带有完全不同类型信息的字典中,然后用浮点数覆盖变量,而不会弄乱前面的空列表。
顺便说一句,不要害怕制作冗长的变量名。当我们需要计算出 k 和 v 是什么时,更难遵循代码。顺便说一句,我们包括您,即使您自己的代码错误命名也会使诊断错误变得更加困难。
推荐阅读
- laravel - 仅当 laravel 的 user_details 表中不存在其详细信息时,如何显示用户表中的所有数据?
- full-text-search - Powerapps 中是否有一个选项可以将搜索文本拆分为单个字符串并在图库中仅显示包含“所有”字符串的项目?
- android - 如何从反应本机代码中获取apk
- r - 我试图用随机-1或+1替换数据集中的0,但它不起作用,有没有我没有考虑过的功能?
- javascript - 一个关于小猜猜我用Js做的年龄游戏的问题
- java - 我无法在 JFrame 的屏幕上显示 2 个对象
- postgresql - 如何使用 created_at 将简单的 postgresql 表转换为超表或时间刻度 db 表进行索引
- jupyter-notebook - Julia:如何设置在 IJulia/Jupyter 中打印的 DataFrame 行数?
- postgresql - 这两个 postgres 表达式是否给出相同的结果?
- c# - 变量设置一次后随机变化