背单词表格生成脚本

基于遗忘曲线的计划表格生成
结果显示:

原代码:

###自制艾宾浩斯记忆表格
'''
20分钟后再重复一遍,1小时后,9小时后,1天后,2天后,5天后,8天后,14天后就会记得很牢
'''
import pandas as pd
import numpy as np
import re
import time
##常数
all_month=[1,3,5,7,8,10,12] ##31天的月份
day_list=[0,1,3,7,13]  ##记忆周期
##输入参数
unit_number=  50    ##需记忆的单元数(个)  
evynum= 1   ##      每天新记忆个数
number_period= unit_number/evynum+13 if unit_number%evynum==0 else unit_number//evynum+14    ##记忆一轮的周期(天)加上14天复习期间
##获取当前时间 格式为 03 28  2023
today=time.strftime("%m %d %Y",time.localtime())
today_list=today.split()
today_mon=int(today_list[0])
today_day=int(today_list[1])
today_year=int(today_list[2])

##or规定开始日期
# today_mon=3
# today_day=12
# today_year=2024


##生成一轮记忆的所有日期
#记忆一轮的所有日期
all_day_list=[]  
#用于循环的指针日期
temp_num=0 #该月份的天数
a=int(number_period)
b=today_day  #第一周的标志
c=today_year
d=today_mon
while (a>=1):     ## 将记忆周期按月划分并生成该月份的日期
    if d in all_month:# 判断是否为31天的月份
        if a<=32-b:
            temp_num=a
            a=0
        else:
            temp_num=32-b
            a=a-(32-b)
    elif d==2:   #二月
        if ((c%4==0) and (c%100!=0))or (c%400==0):  ##闰年
            if a<=30-b:
                temp_num=a
                a=0
            else:
                temp_num=30-b
            a=a-(30-b)   
        else:                                                                ##平年
            if a<=29-b:
                temp_num=a
                a=0
            else:
                temp_num=29-b
            a=a-(29-b)                  
    else:       #30天的月份
        if a<=31-b:
            temp_num=a
            a=0
        else:
            temp_num=31-b
            a=a-(31-b)
    for i in range(temp_num):
        all_day_list.append("{:}.{:}".format(d,b+i))
    if d<12:   ##月份递进
        d+=1
    else:
        d=1
        c+=1  ##年数递进
    b=1     ##第一月后清零    
    
    
##生成表格   
df=pd.DataFrame(columns=["daytime"]+all_day_list)   ##填入日期作为表头
df["daytime"]=[pd.NA]*(6*evynum)
newn=0 ##学习过的单元数
for i in range(1,len(all_day_list)+1):
    day_work=[]
    ##每天新学的任务
    s=evynum
    if i<=unit_number/evynum :
        while( newn<unit_number and s>0):
            newn+=1
            s-=1
            day_work.append("U{:}(学)".format(newn))
    elif unit_number%evynum!=0 and i==unit_number//evynum+1:
        while( newn<unit_number and s>0):
            newn+=1
            s-=1
            day_work.append("U{:}(学)".format(newn))
    ##每天复习的任务
    for x in day_list:
        if 1<=(i-x)<= (unit_number//evynum if unit_number%evynum==0 else unit_number//evynum+1):
            nrew=1
            while(nrew<=evynum):
                if (i-x-1)*evynum+nrew<=unit_number:
                    day_work.append("U{:}(复)".format((i-x-1)*evynum+nrew)) 
                nrew+=1
    df[all_day_list[i-1]]=pd.Series(day_work)           
df.to_excel("记忆曲线.xlsx")

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值