如何计算每组的分数并推断每组的平均分数,

2024-09-30 01:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

更新了问题和代码!2021年1月30日

这个问题合乎逻辑地出现在这个问题之后-How to find a separate attribute among the records and form a separate collection on it?

我需要计算每组的平均分数。 在用户@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))

输入数据

我的名声是litlle,我不能从我的计算机中添加图片,我发送链接,我的输入数据在哪里,我在类中添加了什么,以及我的对象类集合如何显示在控制台中。和组的分离

https://ibb.co/zV1B0HC

如何使平均成绩显示在每组学生名单的底部? 或者只是计算每组的平均分数,然后输入另一本字典

我算出了值的排序​​在字典里

我试着制作第二本字典,把各组放在那里,然后在一个单独的评估单元中进行计算——结果不起作用。 然后我读到,在Python中,您可以将字典添加到字典中。 因此,我试图将现有词典添加到新词典中,但不知道如何继续。 因为无论如何都必须计算分数

不能使用任何帮助器类,只能使用一个类


Tags: 代码inforif字典items分数gl
1条回答
网友
1楼 · 发布于 2024-09-30 01:24:04

dict.items()返回字典中的键值对。根据代码v字典有两种数据

  1. 键是学生编号,值是成绩列表
  2. 键是一个学生组,值是一个包含空列表的列表

我最好的猜测是你不想要那本字典里的第二类东西。我不知道红球的东西应该做什么,但是现在你把它做成一个空列表,放在一个字典里,里面有完全不同的信息,然后用一个浮点数覆盖这个变量,而不会弄乱之前的空列表

另外,不要害怕使用冗长的变量名。当我们需要计算出k和v是什么时,很难遵循代码。顺便说一句,我们包括了您,即使使用您自己的代码,错误的命名也会使诊断错误变得更加困难

相关问题 更多 >

    热门问题