Skip to content

Commit 89775ef

Browse files
fixbug check fill blank
1 parent 1048dbf commit 89775ef

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

classroom/models/abstracts/question.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,23 +76,25 @@ def check_answer(self, answer):
7676
possible_answers = [answer.content for answer in possible_answers]
7777

7878
if self.is_fill_blank():
79-
answer = f' {answer} ' # Add 2 spaces to both side to help with regex matching
79+
return self.check_fill_blank(answer, possible_answers)
80+
else:
81+
return answer in possible_answers
8082

81-
for correct_answer in possible_answers:
82-
regex = correct_answer
83-
if regex.startswith('('):
84-
regex = r'(?:' + regex[1:]
83+
@staticmethod
84+
def check_fill_blank(answer, possible_answers):
85+
answer = f' {answer} ' # Add 2 spaces to both side to help with regex matching
8586

86-
regex = regex.replace(' (', r'(?:\s?')\
87-
.replace(')', r')?')
88-
regex = r'\s*' + regex + r'\s*'
87+
for correct_answer in possible_answers:
88+
regex = correct_answer
89+
regex = regex.replace(r'(', r'(?:')\
90+
.replace(r' (?:', r'(?:\s?')\
91+
.replace(')', r')?')
92+
regex = r'\s*' + regex + r'\s*'
8993

90-
match = re.match(regex, answer)
91-
if match:
92-
match_str = match.group(0)
93-
if match_str == answer:
94-
return True
94+
match = re.match(regex, answer)
95+
if match:
96+
match_str = match.group(0)
97+
if match_str == answer:
98+
return True
9599

96-
return False
97-
else:
98-
return answer in possible_answers
100+
return False

0 commit comments

Comments
 (0)