From 9d5175d0a6bc40666a1ce555c2b201c69049afc1 Mon Sep 17 00:00:00 2001 From: stfujnkk <3365310020@qq.com> Date: Tue, 14 Jun 2022 22:01:44 +0800 Subject: [PATCH] =?UTF-8?q?WIP:[REFACTOR]:main.py,create=5FclozeTest.py:?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/cloze/create_clozeTest.py | 39 ++++++++++++++++++++--------------- app/main.py | 4 ++++ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/app/cloze/create_clozeTest.py b/app/cloze/create_clozeTest.py index c11dc31..fb6021e 100644 --- a/app/cloze/create_clozeTest.py +++ b/app/cloze/create_clozeTest.py @@ -1,7 +1,9 @@ import random -import sqlite3,re +import sqlite3 +import re from nltk.corpus import wordnet as wn + class Essay: def __init__(self): self._article_id = 0 @@ -16,18 +18,19 @@ class Essay: pass @article_id.setter - def article_id(self,article_id): + def article_id(self, article_id): self._article_id = article_id self.find_essay_in_database(self._article_id) - #获取数据库中的文章和等级 - def find_essay_in_database(self,id): + # 获取数据库中的文章和等级 + def find_essay_in_database(self, id): try: # 连接数据库 conn = sqlite3.connect("static/wordfreqapp.db") # 创建游标 cursor = conn.cursor() - cursor.execute("select text,level from article where article_id = "+str(id)) + cursor.execute( + "select text,level from article where article_id = "+str(id)) results = cursor.fetchall() conn.commit() cursor.close() @@ -38,14 +41,14 @@ class Essay: except Exception as e: print(e) - #将文章分割成单词列表 + # 将文章分割成单词列表 def split_essay_to_word(self): article = "".join(self._essay) words = re.split(r"\b[\.,\s\n\r\n\$\']+?\b", article) word_list = [word.lower() for word in words] return word_list - #从数据库中查找和文章难度相同的单词 + # 从数据库中查找和文章难度相同的单词 def find_same_difficulty_words(self): result_list = [] try: @@ -53,7 +56,8 @@ class Essay: conn = sqlite3.connect("static/wordfreqapp.db") # 创建游标 cursor = conn.cursor() - cursor.execute("select word from words where difficulty = " + str(self._difficulty)) + cursor.execute( + "select word from words where difficulty = " + str(self._difficulty)) results = cursor.fetchall() conn.commit() cursor.close() @@ -65,16 +69,16 @@ class Essay: except Exception as e: print(e) - #获取单词的近义词 - def get_word_synsets(self,word): + # 获取单词的近义词 + def get_word_synsets(self, word): synsets_set = wn.synsets(word) synset_list = [] for synset in synsets_set: synset_list.append(synset.name().split(".")[0]) return synset_list - #生成完形填空 - def create_clozeTest(self,essay): + # 生成完形填空 + def create_clozeTest(self, essay): essay.article_id = self._article_id word = [] # 存放文章中含有的与文章难度相同的单词 answers = [] # 存放正确答案 @@ -82,26 +86,27 @@ class Essay: database_words = essay.find_same_difficulty_words() essay_words = essay.split_essay_to_word() + # 寻找文章中与文章难度相同的单词存入word[]中 for essay_word in essay_words: if database_words.__contains__(essay_word) and essay_word not in word: word.append(essay_word) - + # 给出因文章内容太少的问题导致题目少于10个的情况 if len(word) <= 10: answers = word - else: + else: # 将找出来的单词作为正确答案存入answers[]中 for i in range(0, 10): w = word[random.randint(0, len(word) - 1)] if not answers.__contains__(w): answers.append(w) self._answers = answers - + # 用题号来替换文章中的单词 No = 1 for answer in answers: questions.append(list(answer.split(","))) - self._essay = self._essay.replace(answer,'('+str(No)+')____', 1) + self._essay = self._essay.replace(answer, '('+str(No)+')____', 1) No += 1 - + # 生成每道题目的四个选项 for question in questions: synset = list(set(essay.get_word_synsets(question[0]))) if len(synset) == 0 or len(synset) == 1: diff --git a/app/main.py b/app/main.py index 7bbcdff..bc3ce1d 100644 --- a/app/main.py +++ b/app/main.py @@ -109,6 +109,10 @@ essay = Essay() @app.route('/gocloze', methods=['GET', 'POST']) def go_ClozeTest(): + ''' + 根据GET或POST方法来分别返回答题前后的完型填空界面 + :return: 完型填空界面 + ''' if request.method == 'GET': essay._article_id += 1 essay.create_clozeTest(essay)