64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from competition.models import ChoiceInfo, FillInBlankInfo
|
|
|
|
|
|
def check_correct_num(rlist):
|
|
if isinstance(rlist, list):
|
|
total = len(rlist)
|
|
correct = 0
|
|
correct_list = []
|
|
wrong_list = []
|
|
for i in rlist:
|
|
if isinstance(i, str):
|
|
i = i.split(',')
|
|
t = i[0][0] # qtype
|
|
p = i[0][2:] # pk
|
|
v = i[1] # answer
|
|
|
|
# 转换类型
|
|
try:
|
|
pk = int(p)
|
|
except ValueError:
|
|
continue
|
|
# 判断题目类型
|
|
if t == 'c':
|
|
try:
|
|
c = ChoiceInfo.objects.get(pk=pk)
|
|
except ChoiceInfo.DoesNotExist:
|
|
continue
|
|
|
|
if "A" in v:
|
|
if str(c.item1) == str(c.answer):
|
|
correct += 1
|
|
correct_list.append(i)
|
|
elif "B" in v:
|
|
if str(c.item2) == str(c.answer):
|
|
correct_list.append(i)
|
|
correct += 1
|
|
elif "C" in v:
|
|
if str(c.item3) == str(c.answer):
|
|
correct += 1
|
|
correct_list.append(i)
|
|
elif "D" in v:
|
|
if str(c.item4) == str(c.answer):
|
|
correct += 1
|
|
correct_list.append(i)
|
|
else:
|
|
wrong_list.append(i)
|
|
|
|
if t == 'f':
|
|
try:
|
|
f = FillInBlankInfo.objects.get(pk=pk)
|
|
except FillInBlankInfo.DoesNotExist:
|
|
continue
|
|
|
|
if v.strip() == f.answer:
|
|
correct += 1
|
|
|
|
wrong = total - correct
|
|
|
|
return total, correct, wrong, correct_list, wrong_list
|
|
|
|
return 0, 0, 0, [], []
|