Compare commits

...

1 Commits

Author SHA1 Message Date
majiabin d72ab4fe3a BugFix257 2022-06-01 16:08:55 +08:00
3 changed files with 49 additions and 4 deletions

View File

@ -54,14 +54,56 @@ def get_today_article(user_word_list, articleID):
d = random.choice(result) d = random.choice(result)
text_level = text_difficulty_level(d['text'], d3) text_level = text_difficulty_level(d['text'], d3)
if articleID == None: if articleID == None:
# print('result = ', len(result), sep=' ')
p = False
for reading in result: for reading in result:
text_level = text_difficulty_level(reading['text'], d3) text_level = text_difficulty_level(reading['text'], d3)
factor = random.gauss(0.8, factor = random.gauss(0.8, 0.1) # a number drawn from Gaussian distribution with a mean of 0.8 and a stand deviation of 1
0.1) # a number drawn from Gaussian distribution with a mean of 0.8 and a stand deviation of 1
if within_range(text_level, user_level, (8.0 - user_level) * factor): if within_range(text_level, user_level, (8.0 - user_level) * factor):
list = session.get('articleIdList')
if list == None:
d = reading d = reading
list = [reading['article_id']]
session['articleIdList'] = list
p = True
break break
exist = False
for i in list:
if reading['article_id'] == i:
exist = True
break
if exist == False:
d = reading
list.append(reading['article_id'])
session['articleIdList']=list
p = True
break
if p == False:
session['articleIdList'] = None
p = True
while p:
for reading in result:
text_level = text_difficulty_level(reading['text'], d3)
factor = random.gauss(0.8, 0.1) # a number drawn from Gaussian distribution with a mean of 0.8 and a stand deviation of 1
if within_range(text_level, user_level, (8.0 - user_level) * factor):
if reading['article_id'] != session['prearticleID']:
d = reading
p = False
'''
测试代码
print(session['articleIdList'])
print(session['prearticleID'], d['article_id'], sep=' ')
问题描述选择下一篇文章时由于没有考虑选择文章时会重复选择当前文章可能会导致重复进入某一篇文章
解决方法选择下一篇文章时将选择的文章ID和当前文章ID比较若重复则换一个
进一步优化
问题描述利用上述方法可以满足不重复进入某一篇文章但是可能两篇文章会反复出现
解决方法记录一个队列用来保存出现过的文章ID
选择文章时若文章Id出现在队列中则放弃
若都出现过则清空队列随机选择一个不与当前文章重复的文章
'''
s = '<div class="alert alert-success" role="alert">According to your word list, your level is <span class="badge bg-success">%4.2f</span> and we have chosen an article with a difficulty level of <span class="badge bg-success">%4.2f</span> for you.</div>' % ( s = '<div class="alert alert-success" role="alert">According to your word list, your level is <span class="badge bg-success">%4.2f</span> and we have chosen an article with a difficulty level of <span class="badge bg-success">%4.2f</span> for you.</div>' % (
user_level, text_level) user_level, text_level)
s += '<p class="text-muted">Article added on: %s</p>' % (d['date']) s += '<p class="text-muted">Article added on: %s</p>' % (d['date'])

View File

@ -36,6 +36,8 @@ def signup():
session['username'] = username session['username'] = username
session['expiry_date'] = get_expiry_date(username) session['expiry_date'] = get_expiry_date(username)
session['articleID'] = None session['articleID'] = None
session['articleIdList'] = None
session['prearticleID'] = None
return '<p>恭喜,你已成功注册, 你的用户名是 <a href="%s">%s</a>。</p>\ return '<p>恭喜,你已成功注册, 你的用户名是 <a href="%s">%s</a>。</p>\
<p><a href="/%s">开始使用</a> <a href="/">返回首页</a><p/>' % (username, username, username) <p><a href="/%s">开始使用</a> <a href="/">返回首页</a><p/>' % (username, username, username)
else: else:

View File

@ -30,6 +30,7 @@ def user_reset(username):
:return: 返回页面内容 :return: 返回页面内容
''' '''
if request.method == 'GET': if request.method == 'GET':
session['prearticleID'] = session['articleID']
session['articleID'] = None session['articleID'] = None
return redirect(url_for('user_bp.userpage', username=username)) return redirect(url_for('user_bp.userpage', username=username))
else: else: