python实现艾宾浩斯背单词功能,实现自动提取单词、邮件发送,部署在阿里云服务器,再也不用担心背单词啦!!

本文介绍了使用Python开发的艾宾浩斯背单词系统,该系统自动从Excel文件抽取单词,遵循艾宾浩斯记忆法进行复习提醒,通过QQ邮箱定时发送。项目已部署在阿里云服务器,包括数据处理、日志记录、邮件发送等功能。代码已上传至GitHub,欢迎大家参与交流和改进。
摘要由CSDN通过智能技术生成

已经完成了利用python爬虫实现定时QQ邮箱推送英文文章,辅助学习英语的项目,索性就一口气利用python多做一些自动化辅助英语学习的项目,对自己的编程能力和英文水评也有一定的帮助,于是在两天的努力下,我完成了今天的项目。

首先是艾宾浩斯记忆法,大家了解一下真的非常有效果(至少对于我来讲啦┑( ̄Д  ̄)┍)


项目源码:
链接: https://pan.baidu.com/s/1Y6OuGZbAXrDNuGcHVO2EZQ 提取码: 3se3


当然,我也会把自己的项目上传到github上供大家指正,由于本人非常喜欢python和英语,所以后期也做很多将两者结合起来的项目。所以,如果大家对本项目有兴趣,希望体验或加入开发,又或者对它有一定的想法与意见,欢迎加入我最近组建的交流群。谢谢大家啦~~

在这里插入图片描述

本项目主要是通过在事先准备好的excel单词文件中每天抽取单词,并反复使用QQ邮箱发送到自己的邮箱里提醒自己有一定规律的背单词,项目最大的难点有三。


  1. 对于csv文件的对应切片任务等操作
  2. 对于日志的记录
  3. 艾宾浩斯记忆法是一个周期性的过程,需要反复的计算。

当然,由于这个项目的文件还是比较多的,所以为了简化这个项目,我就先按照自己的开发思路来说,当然如果要自己来使用本项目还是要费一番心思读一读代码才好,因为在dataframe数据的处理部分随便拿一个小坑讲一下都是一篇文章(😂)所以,各位一定要耐心读下去鸭。


好了
show me the code


开发环境 :python3.6
IDEA : pycharm2019
阿里云ECS: centos7

接下来我们看一下项目路径,并注意对应进行解释:
(忽略我拙略的变量英文,就是因为这样所以才好好学习英语鸭)

在这里插入图片描述


分别来解释一下

data 目录
用于存放日志文件,分别有data_log.csv和word.csv
data_log.csv 用于每天随机抽取单词的时候避免抽取到重复的单词。
word.csv 是每天将每个单词的time时间数据记录进去进而用于计算单词复习的时间。
在这里插入图片描述


every_day_word 目录
用于存储每天随机抽取的单词机器词义等相关信息,并将其存储为csv格式,以对应的时间为文件名存储,同步在上面的data_log.csv的time索引内。
在这里插入图片描述


word 目录
存储总的单词大表数据的目录,很简单。

在这里插入图片描述


接下来就是我们的项目代码部分,如你所见项目代码都在项目的根目录处,
在这里插入图片描述
接下来我会一 一的说明这些代码,当然是以我自己的顺序,对了代码的详细解释在代码的注释里面,有任何疑问和想法可以加入上面的群来交流。


word_read_project.py


这一部包含了多个函数与变量,是项目文件处理的第一核心部分,主要难点在于dataframe的控制问题以及日志的读写问题,需要耐心的看完,推荐搭配pycharm专业版使用,非常方便。

#auther :keepython
import pandas as pd
import numpy as np
import os
import time
import random

word_file_path = 'word/六级核心词汇表(EXCEL表格).xls&
以下是一个基于Python实现的读取含有要背诵单词的txt文件,然后利用艾宾浩斯背单词功能的代码示例: ```python import datetime # 定义艾宾浩斯复习计划 eb_plan = [1, 2, 4, 7, 15] # 定义读取或保存单词列表和计划的函数 def read_words_and_plan(file_path): # 读取单词列表和计划 word_list = {} with open(file_path, 'r') as f: lines = f.readlines() for line in lines: word, last_review_date, level = line.strip().split(',') word_list[word] = (datetime.datetime.strptime(last_review_date, '%Y-%m-%d').date(), int(level)) return word_list def save_words_and_plan(file_path, word_list): # 保存单词列表和计划 with open(file_path, 'w') as f: for word, (last_review_date, level) in word_list.items(): f.write('{},{},{}\n'.format(word, last_review_date.strftime('%Y-%m-%d'), level)) # 定义获取下一次复习日期的函数 def get_next_review_date(word, level): # 计算下一次复习日期 if level < len(eb_plan): days = eb_plan[level] else: days = eb_plan[-1] return word_list[word][0] + datetime.timedelta(days=days) # 定义添加单词的函数 def add_word(word, word_list): # 将单词添加到单词列表中 if word not in word_list: word_list[word] = (datetime.date.today(), 0) # 定义背诵单词的函数 def review_words(file_path): # 读取单词列表和计划 word_list = read_words_and_plan(file_path) # 获取当前日期 today = datetime.date.today() # 循环遍历单词列表,检查是否需要复习 for word, (last_review_date, level) in word_list.items(): # 如果需要复习,提示用户进行复习 if today >= get_next_review_date(word, level): print('Time to review word: ' + word) # 更新复习记录 word_list[word] = (today, level + 1) # 保存单词列表和计划 save_words_and_plan(file_path, word_list) ``` 以上代码中,read_words_and_plan函数用于从文件中读取单词列表和计划,save_words_and_plan函数用于将单词列表和计划保存到文件中,add_word函数用于添加新的单词单词列表中,review_words函数用于进行单词背诵和复习。在使用review_words函数之前,需要先调用add_word函数将要背诵的单词添加到单词列表中。文件中的单词记录格式为:单词,上次复习日期,复习等级。 例如,如果我们要背诵的单词记录保存在words.txt文件中,可以使用以下代码进行背诵和复习: ```python file_path = 'words.txt' # 单词列表和计划保存的文件路径 new_word = 'apple' # 新的要背诵的单词 word_list = read_words_and_plan(file_path) # 读取单词列表和计划 add_word(new_word, word_list) # 添加新的单词单词列表中 review_words(file_path) # 进行单词背诵和复习 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值