背单词表格生成脚本

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

原代码:

###自制艾宾浩斯记忆表格
'''
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")

说明 此版本仅仅为测试版,是我一时兴起写了半个小时的产物。。。所以许多方面未能完善,希望大家多多提意见,也希望有人能继续编写。 此程序根据“杨鹏17天背词法”及“艾宾浩斯记忆曲线”编写,可以帮用户生成一个“*天背单词计划”,各个list都会在一定天数内重复1~5次,有助于用户牢固、快速背单词,是背四六级、托福、gre单词的居家旅行必备良品~ 编写缘由 最近在拿新东方的托福红宝书背词,>_<有些单词背完了忘、忘完了背,最后是背下来了,但是花费的时间实在不少,十分纠结。况且我还是最近闲的,如果是处在艰难备考期的同志们遇到背单词的问题肯定更是急得跳脚了吧……于是胡乱背的我开始在网上搜“单词记忆法”这种东西,然后就搜到了“杨鹏17 天gre的表格”,顿时觉得如获至宝,该表格根据大众记忆曲线挑出了最好的复习时间,能让人用尽量少的时间记牢单词,解放了许多在词海中苦苦遨游数个月的考生。可是,gre对我来说级别太高,我还是先背背大学四级、托福比较实际,于是我又开始搜……结果只搜到根据“toefl词汇 词根+联想-俞敏洪 35list版本”的表格,= =十分懊恼,只好自己拿excel根据最基本的记忆法开始列计划表。结果,列了两行就发疯乱套了= =这样,才想到写个小程序,自定义“每日背list数”、“单词书list总数”(网上搜到的表格基本都是按35个list写的,但是我买的书是45个 list= =……)方便自己日后列表、方便大众背单词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值