如何找到各自分数的学生等级

时间:2019-09-25 17:29:14

标签: python

我有一个带有N个条目的标记数组。我必须根据分数找到学生的等级,即如果2个学生具有相同的分数,那么他们的排名就相同。

y=0
for x in marks:
 if marks[N] > marks[N+1]:
  rank=rank+1
 if marks[N] == marks[N+1]:
  rank=rank
  y=y+1

这是我试图在其中使用的逻辑,但没有得到所需的答案

例如:

marks = [89,88,79,74,74,74,74,74,64,56,56,25,24]

所以排名应该是

score   rank
89      1
88      2
79      3
74      4
74      4
74      4
74      4
74      4
64      9

以此类推。

3 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow。我试图以一种反映您上面描述的逻辑的方式来回答。但是,查看您提供的代码,我建议您阅读一些基本的Python教程。编码愉快!

marks = [89,88,79,74,74,74,74,74,64,56,56,25,24]
current_rank = 0
global_rank = 0
current_mark = 0

for mark in marks:
    global_rank += 1
    if mark != current_mark:
        current_mark = mark
        current_rank = global_rank
    print(current_mark, current_rank)

答案 1 :(得分:0)

假设列表marks已经排序,则可以通过将列表本身与列表(但偏移量为1)进行压缩来对相邻标记进行配对,如果相邻标记相同,则可以继续添加与最后一个相同的秩,或者附加当前等级列表的长度加1:

ranks = [1]
for a, b in zip(marks, marks[1:]):
    ranks.append(ranks[-1] if a == b else len(ranks) + 1)
print(ranks)

这将输出:

[1, 2, 3, 4, 4, 4, 4, 4, 9, 10, 10, 12, 13]

答案 2 :(得分:0)

学生不会自动生成滚动条

num = 1

def roll():
    global num
    num += 1
    return num