Files
Exam/utils/check_utils.py

64 lines
2.1 KiB
Python
Raw Permalink Normal View History

2026-01-09 18:28:10 +08:00
# -*- 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, [], []