這幾天在尋思着要背托福詞匯,找了個方法想試一試,這個方法就是楊鵬單詞記憶法,是一種根據艾賓浩斯遺忘曲線的規律來制定的學習方法,有興趣的可以點擊https://www.douban.com/note/222850799/或者百度了解一下,下面則簡單說明要怎么來生成這個計划列表
根據這個記憶方法,每一個list都要當天背完后分別相隔一天,兩天,四天,七天,十五天進行復習,所以要在之后能夠及時復習,則需要一個時間表來記錄每天要背到的list。然而這個時間安排表若用手工來制作,這會耗費很多精力和時間,而且還會容易出錯,不過好在這個記法是有規律的,作為一只好吃懶做的程序猿,怎么可能像個機器一樣去記錄呢,肯定要交給機器做嘛(奸笑)
不過想出這個生成安排表算法也着實花費了不少精力,下面簡單說一下算法的小原理
首先要生成所背詞匯書的list,以及所需要花費的天數,這個其實可以寫成程序算,但是為了偷懶,還是自己口算,反正也沒有多少天。
第二步是根據每個日期建立一個列表,然后進行list添加,這里添加list的規律是根據記憶法來的,這里我用的是后推法,即用后面的日期去推之前積累到該天的list,在最后一個list之前(例如第96個list)和之后的判斷都有所不同
鄙人不才,還是貼上代碼吧
import datetime b = [] prepare_list = locals() for i in range(1,97,1): a = 'list_'+str(i) b.append(a) begin = datetime.date(2018,8,16) end = datetime.date(2018,12,19) a = [] for k in range((end-begin).days+1): day = begin+datetime.timedelta(days = k) a.append(str(day)) for j in range(0,125,1): prepare_list[a[j]] = [a[j]] if(j<96): prepare_list[a[j]].append(b[j]) if((j-1)>=0): prepare_list[a[j]].append(b[j-1]) if((j-3)>=0): prepare_list[a[j]].append(b[j-3]) if((j-7)>=0): prepare_list[a[j]].append(b[j-7]) if((j-14)>=0): prepare_list[a[j]].append(b[j-14]) if((j-29)>=0): prepare_list[a[j]].append(b[j-29]) if(j>=96): if((j-1)<96): prepare_list[a[j]].append(b[j-1]) if((j-3)<96): prepare_list[a[j]].append(b[j-3]) if((j-7)<96): prepare_list[a[j]].append(b[j-7]) if((j-14)<96): prepare_list[a[j]].append(b[j-14]) if((j-29)<96): prepare_list[a[j]].append(b[j-29]) print(prepare_list[a[j]])