我的单词银行 | Python

2019-08-17  本文已影响0人  晏如V5

源起

陪少年背单词,一直没有一款的称手的APP。试过几个,都只能使用预设的单词表。但实际情况是,每天我们都会从课文、绘本或者视频中发现一些新的单词,我迫切需要一个自定义的单词本。

以前我都是帮他抄在本子上,再根据记忆曲线的原理,分别写在后续1天、2天、5天、17天和31天的复习单上。随着单词越来越多,抄起来就越来越繁琐。

所以,我一直琢磨着写个程序来解决这个问题。

因为每天收集新单词进列表,每天又取需要复习的单词表,我取了个好玩的名字,叫“单词银行”。

备忘:处理OFFICE相关的库

EXCEL的读和写

pip install Xlwt;

pip install Xlrd;

WORD相关

pip install Python-docx;

PowerPoint相关

pip install Python-pptx;

源代码

# 目标:做一个基于记忆曲线的背单词辅助工具
# 输入方式:每天一行,保存在一个Excel表中。存储列表的默认位置是C:\cr_python\wordlist.xlsx
# 输出方式:每天输出要复习的单词,打印成一个Word文件
# 记忆曲线的体现:第1天、2天、5天、17天、31天。

# 完成了Excel读出和Word写入。            Aug. 13th, 2019.
# 完成了日期的计算。                 Aug. 14th, 2019.
# 对于路径的一些优化,可以使用OS库。    TODO
# 不知道如何表示Tab,/t好像不行。        TODO
# 当列表很长时,如果优化算法?            TODO


import xlrd                         #读入Excel的库
from docx import Document           #处理Word的库
import datetime                     #处理datetime的库



def printTheDay(base):
    document = Document()
    document.add_heading('今日复习', 1)

    wordlist = xlrd.open_workbook('C://cr_python//wordlist.xlsx')
    sheet = wordlist.sheet_by_index(0)
    #print(sheet.cell(0, 0).value)

    for row in range(sheet.nrows):
        time = xlrd.xldate_as_datetime(sheet.cell(row, 1).value, 0)         #将本行第1个单元取出为datetime类型,用于计算。
        intervals = (base - time).days
        #print(intervals)
        if intervals == 0 or intervals == 1 or intervals == 2 or intervals ==5 or intervals == 17 or intervals ==31:
            text = ""
            for col in range(sheet.ncols):
                if col > 1:
                    #print(sheet.cell(row, col).value)
                    text += sheet.cell(row, col).value
                    text += "    "                                          #不知道如何表示Tab,/t好像不行。 TODO
            document.add_paragraph(text)
    #document.add_page_break()
    document.save('today.docx')


today = datetime.datetime.now()
printTheDay(today)
上一篇 下一篇

猜你喜欢

热点阅读