如何在python中根据正确答案按升序显示学生

2024-04-25 22:48:25 发布

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

好吧,我在写这段代码,但不知道如何把学生的顺序,从最少到最大的正确答案。输出应该是“学生3的正确答案数是4”等等。 这是我目前的代码:

def main():
  answers = [
    ['A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'],
    ['E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'],
    ['C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'],
    ['A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D']]
  key = ['D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D']
  for i in range(len(answers)):
    correctCount = 0
    for j in range(len(answers[i])):
      if answers[i][j] == key[j]:
        correctCount +=1
    print("Student", i, "'s correct count is", correctCount)
main()

Tags: key答案代码inforlenif顺序
1条回答
网友
1楼 · 发布于 2024-04-25 22:48:25

我认为你最好把问题分成几个步骤:

  1. 确定正确答案的数目
  2. 对输出进行排序

根据前面的步骤,您可以执行以下操作:

answers = [
    ['A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'],
    ['E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'],
    ['C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'],
    ['A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'],
    ['E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D']]


def number_of_correct_answers(answers, golden=['D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D']):
    """Return the number of correct answers given a gold standard"""
    return sum(g == a for g, a in zip(golden, answers))


for student_answer in sorted(answers, key=number_of_correct_answers, reverse=True):  # the best come first
    print(student_answer, 'Number of correct', number_of_correct_answers(student_answer))

输出

['A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'] Number of correct 8
['A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'] Number of correct 7
['B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'] Number of correct 7
['B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'] Number of correct 7
['E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'] Number of correct 7
['D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'] Number of correct 6
['E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'] Number of correct 5
['C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'] Number of correct 4

上述函数的键依赖于函数:sumsorted。在上面的例子中,更好的学生是第一位的,如果你想换一种方式,只需删除reverse=True参数。你知道吗

见:

  1. Sorting - HOWTO

相关问题 更多 >