如何在 Python 中根据正确答案按递增顺序显示学生

  • 本文关键字:顺序 显示 答案 Python 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()

我认为最好将问题分成几步:

  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

上面函数的键依赖于函数:sum和排序。在上面的示例中,更好的学生是第一位的,如果您想要相反的方式,只需删除 reverse=True 参数即可。

看:

  1. 排序 - 操作方法

最新更新