Closed xuminxi closed 11 months ago
这个应该是只要有一个单词被标记rate之后,rate的判断就不会为0吧。这个是review里面的数据,前100个不会出现这个问题,到第二个list就出现这个报错 1-200.txt
这个应该是只要有一个单词被标记rate之后,rate的判断就不会为0吧。
是的。那应该是第二个list的rate都是0,都还没背过?(没有一个单词点过「我记得」/「不认识」)
如果上述猜测不对,你可以考虑只select出第二个list的的单词来看看,或者不介意的话把sqlite3文件发给我看看?
感谢兄弟回复那么快,我上面的附件里面有review的text文件,筛选了0-200两个list的单词,如果需要完整的db文件再和我说,我从mysql里面导出来
到第二个list就出现这个报错
我看下,"第二个list" 指的是 LIST
==1 的对吧
是的
我大概知道了,你应该是因为整个list都做了简单标记
试试把 view.py 中 rate 的计算换成下面的代码。如果没问题我就更新下代码
# 背过的单词进度
rate = (len([r[0] for r in ld.values_list('rate') if r[0] != -1]) +
len(ld_pass)) / L_db.word_num
rate = 1 - rate if rate != 0.0 else 0
点错了不好意思...
似乎还是不行。。
print下这几个看看什么情况
print(len(ld), len(ld_pass), rate)
最初的代码应该是没有问题的,当我改成第二版的时候第一个list也出现了问题。
初始代码:
list0: 2 98 0.013334
list1: 0 100 0.0
新代码:
list0: 0 100 0.0
list1: 0 100 0.0
哦... 试试换成这样
# 背过的单词进度
rate = (len([r[0] for r in ld.values_list('rate') if r[0] != -1]) +
len(ld_pass)) / L_db.word_num
print(len(ld), len(ld_pass), rate)
if rate == 0:
status = 404
msg = '你好像还没背过这个 List 诶 😳'
continue
rate = 1 - rate if rate != 0.0 else 0
Hi bro, 问题在于 ld.values_list('rate') 这个set是空的,所以rate值总是空的 ld = Review.objects.filter( BOOK=BOOK, LIST=LIST, flaglt=1) 这里面的参数 flaglt=1 是什么意思呢,我看到LIST的输出是1应该没问题,book因为第一个list没问题,应该也ok
看命名规则似乎是less than的意思,逻辑也没问题,但是如果去掉这条filter问题就全部消失了。
lt
是 less than 的意思,查询的是flag小于1的值。flag是单词是否简单的标记。你的list应该是全部都标记简单了,所以 ld
是空的,但这样 ld_pass
肯定是不空的,所以我才改了 rate 的赋值。
哦... 试试换成这样
# 背过的单词进度 rate = (len([r[0] for r in ld.values_list('rate') if r[0] != -1]) + len(ld_pass)) / L_db.word_num print(len(ld), len(ld_pass), rate) if rate == 0: status = 404 msg = '你好像还没背过这个 List 诶 😳' continue rate = 1 - rate if rate != 0.0 else 0
你试过这个没有呢
我懂了,可能是我第一遍把看过的单词都标记为掌握来区分是否看过(绿色圆点)?那么我考虑下次把不认识的标为重难。 新的也试过了,但是continue后面是不是就直接跳出循环了。
if rate == 0 and len(ld) > 0:
我 if 多个判断吧,之前没碰到过整个 list 都打简答标签的情况。如果我没记错的话,这个 rate 是看还不熟悉的单词的比重(年代太久远了),所以才要在查询的时候区分flag来取数。
continue就不对这个list作后续处理了,所以要是把if判断条件补充一下逻辑应该就对了。
本身continue跳出是防止在list中一直「下一个」直接把整个list「下一个」完了的情况。
帅,解决了。
views.py
if rate == 0: status = 404 msg = '你怕是还没背过这个List' continue
似乎是計算準確率。但是理論上應該不會是零啊