python实现“艾宾浩斯”记忆曲线表

背景

需要使用记忆曲线复习英文,对于记忆曲线软件自己有如下需求:

  1. 容易上手,不用花费很多时间在学习使用教程上
  2. 支持网页端和mobile端,网页端进行规划和操作,mobile查看具体的计划
  3. 主要是提供提醒的功能,需要在哪个时间节点复习。自己更喜欢根据上下文复习内容,比如:重点单词和词组,笔记喜欢记在原文上,这样可以更好的关联上下文复习,记忆会更高效
    寻找了市面上的几个软件都不能符合自己的需求,自己不想花费太多时间在选择上

实现逻辑

  1. 首先确定复习目标
  2. 确定复习的时间节点 1, 2, 4, 7, 15天
  3. 编写python代码生成复习计划
  4. 确定复习计划的展现载体

具体实现

自己目前学习的是超实用英语口语1000句这本书,每天学习是1小节,学习过程中的重点和笔记是记在书上的,复习时根据上下文会对复习的内容有更深刻的理解,且会比较省时。
python脚本主要包含两个:

  1. 展示复习目标和复习的时间节点在这里插入图片描述
  2. 展示每天的复习计划
    在这里插入图片描述
    分别对应的python脚本如下
  3. 展示复习目标和复习的时间节点
    from datetime import date, timedelta
    import openpyxl
    from openpyxl.utils import get_column_letter
     # 打开目标文件的sheet页
    word_target = r'E:\target\english1000_memory.xlsx'
    sheet_name = 'arrange'
    target_book = openpyxl.load_workbook(word_target)
    target_sheet = target_book.get_sheet_by_name(sheet_name)
    # 获取文件最大的行数,可以增量叠加
    nrows = target_sheet.max_row
    # 需要复习的目标,根据自己的需求调整
    target = ['英语1000句复习part2']
    # 复习间隔,以天数为单位,根据自己的需求调整
    times = [1, 2, 4, 7, 15]  
    # 把复习的时间节点放到一个list里面
    time_list = []
    for a in times:
        review_time = date.today() + timedelta(0) + timedelta(a)  # 应复习的时间点
        time_list.append(review_time)
    # 生成复习计划并保存在excel表格中
    for i in range(0, len(target)):
        target_sheet[f'A{nrows + i + 1}'].value = target[i]
        for j in range(0, len(time_list)):
            column = get_column_letter(j + 2)
            target_sheet[f'{column}{nrows + i + 1}'].value = time_list[j]
    target_book.save(word_target)
  1. 展示每天的复习计划
    import openpyxl
    from openpyxl.utils import get_column_letter
    word_target = r'E:\target\english1000_memory.xlsx'
    sheet_name = 'arrange'
    # 打开excel中的arrange sheet,获取复习的内容和时间节点,生成每天的时间复习计划
    # 生成时间的set
    arrange_book = openpyxl.load_workbook(word_target)
    arrange_sheet = arrange_book.get_sheet_by_name(sheet_name)
    nrows = arrange_sheet.max_row
    ncols = arrange_sheet.max_column
    time_list = []
    for i in range(2, nrows + 1):
        for j in range(2, ncols + 1):
            column = get_column_letter(j)
            time_list.append(arrange_sheet[f'{column}{i}'].value.strftime("%Y-%m-%d"))
    time_list = sorted(set(time_list))
    print(time_list)
    # 生成复习的dict,key是时间,value是每天的复习内容的list
    review_dict = {}
    for time in time_list:
        review_dict_list = []
        for i in range(2, nrows + 1):
            for j in range(2, ncols + 1):
                column = get_column_letter(j)
                if arrange_sheet[f'{column}{i}'].value.strftime("%Y-%m-%d") == time:
                    review_dict_list.append(arrange_sheet[f'A{i}'].value)
        review_dict[time] = list(sorted(set(review_dict_list)))
    print(review_dict)
    time_sheet_name = 'time'
    time_sheet = arrange_book.get_sheet_by_name(time_sheet_name)
    p = 2
    # 把刚刚的字典保存在excel中,column A是字典的key,其他的column是字典的value
    for time in review_dict.keys():
        time_sheet[f'A{p}'].value = time
        q = 2
        for value in review_dict.get(time):
            column = get_column_letter(q)
            time_sheet[f'{column}{p}'].value = value
            q += 1
        p += 1
    arrange_book.save(word_target)

最后使用稻壳的同步文件夹功能,保存到目标文件夹的内容可以随时同步到手机上,可以随时访问
在这里插入图片描述


版权声明:本文为m0_48468018原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。