背景
需要使用记忆曲线复习英文,对于记忆曲线软件自己有如下需求:
- 容易上手,不用花费很多时间在学习使用教程上
- 支持网页端和mobile端,网页端进行规划和操作,mobile查看具体的计划
- 主要是提供提醒的功能,需要在哪个时间节点复习。自己更喜欢根据上下文复习内容,比如:重点单词和词组,笔记喜欢记在原文上,这样可以更好的关联上下文复习,记忆会更高效
寻找了市面上的几个软件都不能符合自己的需求,自己不想花费太多时间在选择上
实现逻辑
- 首先确定复习目标
- 确定复习的时间节点 1, 2, 4, 7, 15天
- 编写python代码生成复习计划
- 确定复习计划的展现载体
具体实现
自己目前学习的是超实用英语口语1000句这本书,每天学习是1小节,学习过程中的重点和笔记是记在书上的,复习时根据上下文会对复习的内容有更深刻的理解,且会比较省时。
python脚本主要包含两个:
- 展示复习目标和复习的时间节点

- 展示每天的复习计划

分别对应的python脚本如下 - 展示复习目标和复习的时间节点
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)
- 展示每天的复习计划
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版权协议,转载请附上原文出处链接和本声明。