From d953e8c96796376dfde2fa7ca7e6d561765b71fe Mon Sep 17 00:00:00 2001 From: "J.sky" Date: Thu, 13 May 2021 17:09:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Psmrcddup.py | 26 +++++++++++++++----------- app.py | 50 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 50 insertions(+), 26 deletions(-) diff --git a/Psmrcddup.py b/Psmrcddup.py index fe7f108..3c1613f 100755 --- a/Psmrcddup.py +++ b/Psmrcddup.py @@ -27,7 +27,7 @@ 3.保存为.docx用来打印. -开心Python Django 学习交流q群:217840699 +开心Python Flask Django 学习交流q群:217840699 Author : J.sky @@ -134,32 +134,36 @@ class Generator(object): 根据给出的属性返回一道合法的口算题 ''' - f = [] - for i in range(self.step+1): - f.append(self.multistep[i]) + f = self.get_formulas() if self.step == 1: # 返回一步口算题 - return getOne(f, self.signum, self.multistep[4], self.addattrs["carry"], self.subattrs["abdication"], self.divattrs["remainder"],self.is_result) elif self.step >1: return getMoreStep(f, self.multistep[4], self.symbols,self.step, self.addattrs["carry"], self.subattrs["abdication"], self.divattrs["remainder"],self.is_bracket, self.is_result) + def get_formulas(self): + ''' + return 口算题算数项的取值范围list + ''' + f = [] + for i in range(self.step+1): + f.append(self.multistep[i]) + return f + def generate_data(self): '''根据条件生成所需口算题''' slist = [] - k = 0 - # 循环生成所有加法口算题 - + # k = 0 while True: - formula = self.__getFormula() # 生成一道算式题 if formula: slist.append(formula) - k += 1 # 成功添加一道 - if k == self.number: + # k += 1 # 成功添加一道 + # if k == self.number: + if len(slist) == self.number: break random.shuffle(slist) # 洗牌,先打乱list中的排序 diff --git a/app.py b/app.py index e0edc84..a2e24f5 100755 --- a/app.py +++ b/app.py @@ -38,7 +38,7 @@ app.jinja_env.lstrip_blocks = True app.secret_key = 'secret string' -# APP配置文件 对象 +# APP配置文件对象 appConfig = AppConfig() # 程序配置文件对象 @@ -73,14 +73,26 @@ def createPSM(): @app.route('/api_producePSM', methods=['POST']) def producePSM(): + ''' + 接受前端发来的口算题配置生成口算题并保存到文件 + ''' jsondata = request.get_json() # print(jsondata) isok = producePSM(jsondata) + rs = getRstr(isok) + return jsonify(rs) + +def getRstr(isok): + ''' + 根据判断返回口算题是否生成的提示文字 + :param isok bool + :return bool + ''' if isok: rs = {"info": "口算题生成完毕!"} else: rs = {"info": "口算题生成失败!"} - return jsonify(rs) + return rs ############################# @@ -127,7 +139,7 @@ def isZeroA(step, signum, multistep, symbols, number,remainder,is_result): def producePSM(json_data): '''发布口算题保存.docx文件''' - print(json_data) # 打印测试 + # print(json_data) # 打印测试 psm_list = [] # 口算题列表 psm_title = [] # 标题列表 if len(json_data) == 0: @@ -136,19 +148,11 @@ def producePSM(json_data): else: # 循环生成每套题 for i in range(json_data[1]["juanzishu"]): - templist = [] - for j in json_data[0]: - # print(j) - g = Generator(addattrs=j["add"], subattrs=j["sub"], multattrs=j["mult"], divattrs=j["div"], - symbols=j["symbols"], multistep=j[ - "multistep"], number=j["number"],signum=j["signum"], step=j["step"], - is_result=j["is_result"], is_bracket=j["is_bracket"],) - templist = templist + g.generate_data() - random.shuffle(templist) - # print(templist) - psm_list.append(templist) + templist = getPsmList(json_data)#生成一页口算题 + random.shuffle(templist)#随机打乱 + psm_list.append(templist)#添加到list 准备后期打印 # 为生成的文件起名r - psm_title.clear() + # psm_title.clear() for i in range(json_data[1]["juanzishu"]): psm_title.append(json_data[1]["jz_title"]) @@ -162,3 +166,19 @@ def producePSM(json_data): appConfig.saveAll(json_data)#保存所有配置项 # self.movdocx() return 1 + +def getPsmList(json_data): + ''' + 根据配置文件生成一套口算题的所有题 + :param json_data 口算题的所有配置 + :return list 最终的口算题页 + ''' + templist = [] + for j in json_data[0]: + # print(j) + g = Generator(addattrs=j["add"], subattrs=j["sub"], multattrs=j["mult"], divattrs=j["div"], + symbols=j["symbols"], multistep=j[ + "multistep"], number=j["number"],signum=j["signum"], step=j["step"], + is_result=j["is_result"], is_bracket=j["is_bracket"],) + templist = templist + g.generate_data() + return templist -- GitLab