初学 python 一点点, 想自己上手写一个完整功能的简单的背单词 app, 采用的是遗忘曲线方法, 每个单词有个 level, level 越高那么距离下次记忆的时间越长, 想了两种解决方案, 但还没开始写具体的程序, 以下是我的思路.
---
启动程序:
1. 检查 csv 文件中的 level 属性和 date 属性,若无则设置为 0 和当前 date
2. 检索符合当天 date 的单词, 将其导入到 python_list 中, 每个单词及其属性以 dict 形式保存
3. 若用户设置了每日背词数量, 则优先推送 level>0 的单词, 否则不安排优先顺序
推送程序:
1. 推送单词本体, 用户尝试回忆单词含义,
2. 回车键显示含义, 用户认知正确则 level+1, 同时计算 date,
3. 若用户认知错误则 level 清零, 同时安排单词到 list 末尾, 稍后再次回忆
4. 记忆单词结束以后, 将 list(包含已更新的 level 和 date)写回到数据库中
导入功能:
用户可以自行增加单词(其中不含 level 和 date 属性)并 merge 到数据库中, 不会影响到已存在的的单词及其属性
---
虽然我还没有开始写程序, 但是我想到了一个问题, 当数据库中的单词数量日积月累地增多时, "检索单词的属性"这件事会变得缓慢甚至卡顿, 于是我想到了另一种方案:
date 并不作为单词的属性而是作为文件名,
当天打开 app 时直接在文件夹中寻找名为 date.csv 的文件并读取到 list 中,
level 值发生变化时计算相应的 date:
若 date.csv 已存在则写入文件的末尾,
若不存在则创建一个 date.csv 并写入到第一行
导入程序则需要创建一个识别库(仅包含单词本身, 无其他属性), 避免导入重复的单词, 符合规则的单词直接进入 date.csv 文件
---
examples:
https://www.notion.so/zisenminotion/64d0c77494a74698937323284a7657b0?v=9486467933814fde9cfc7d64afb5087c如果大佬有其他方案欢迎提出, 不过尽量不要太复杂, 目前我也没接触数据库这方面的知识
这是我的笔记地址
https://www.notion.so/zisenminotion/Words-Learner-Pro-d21c221891604b0fa0d47c6a1a27bdc9