做什么
背单词是一件令人头痛的事情,使用记忆曲线记忆可以帮助人们更好的记忆
本文主要根据你的输入生成一个单词复习计划表,并且可以辅助你进行适合你的背单词规划
记忆曲线
记忆曲线的周期为:
12 小时后为一个周期
1天后为一个周期
2天后为一个周期
4天后为一个周期
7天后为一个周期
15天后为一个周期
30天后为一个周期
规划
背诵日期格式说明:
空格表示不背
字母表示对应单元,1 A表示第一天背了A单元
格式固定为 数字+空格+字母
1 A
2 B
3 C
4 E
5
6 F
7 G
8
9 H
10
11 I
12 J
生成效果
根据生成的效果复习,或者调整参数生成合适的复习表
格式说明:
A1 表示A单元复习第一遍 #A 表示背诵新单元A
程序
说明:
按1根据txt生成复习表
按2调整参数,估算背诵单词频率是否合适
import os
cycle=[1,1,2,4,7,15,30]
list_code=['' for _ in range(150)]//按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的。
for i in range(0,150):
list_code[i]=str(i+1)+" "//str() 函数将对象转化为适于人阅读的形式。它将参数转换成字符串类型
#分离出每行的数字和单词
def code_split(f):
for line in f.readlines():
line=line.strip('\n')
print(line)
digit=""
english=""
for char in line:#先提取数字和字母的信息
if char!=' ':
digit+=char
elif char==' ':
english=line.strip(digit)
english=english.strip(' ')
if english!='':
calcuate(digit,english,list_code)
break
#对每行进行日期叠加
def calcuate(digit,english,list_code):
list_code[int(digit)-1]+=' #'+english
for i in range(len(cycle)):
locate=int(digit)+cycle[i]-1
list_code[locate]+=' '+english+str(i+1)+' '
if __name__ == '__main__':
path=os.path.abspath('.') #获取当前路径
address = path+os.sep+"背诵日期.txt"#文本存放路径
statue=input('根据背诵时间 生成复习表,请按1:\n修改参数,预览复习计划 请按2:')
if statue=='1':
with open(address, 'r') as f:
code_split(f)
elif statue=='2':
workday=int(input('请输入连续背的天数:'))
holiday=int(input('请输入休息天数:'))
stop=int(input('请输入背诵新单词总天数: '))
for i in range(stop):
digit2=i+1
if i%(workday+holiday)<workday:
english2=chr(ord('A')+i-holiday*int(i/(workday+holiday)))
calcuate(digit2,english2,list_code)
for i in range(0,150):
print(list_code[i])
os.system("pause")
待实现
自动调参计算得分
计算分布得分
日均单词得分
对复习频率进行权重分配