python应用之复习计划生成器
原理:艾宾豪斯遗忘曲线
#ecoding=utf-8
from xlwt import Workbook
import datetime
w =Workbook()#创建一个工作簿
ws = w.add_sheet('1') #创建一个工作表
dayl=[1,2,4,8]
word_number=int(input("请输入任务数(不大于15):"))
exam_date=input("请输入您的考试日期(格式为:2019/1/1):")
subject_name=input("请输入您的考试科目:")
year,month,day=exam_date.split("/")
total_day=word_number+8
letter_l=[chr(i) for i in range(65, 65+word_number)]
exam_date=datetime.date(int(year),int(month),int(day))
today_date=datetime.date.today()
diminish_date=str(exam_date.__sub__(today_date).days)
print('今天距考试还有'+diminish_date+'天,本计划共需要'+str(total_day)+'天完成复习,建议您从'+str(exam_date+datetime.timedelta(days=-(total_day+1)))+'开始复习'+subject_name)
ws.write(1,0,'需要复习')
ws.write(2,0,'打卡情况')
for i in range(1,total_day):
ws.write(0,i,i)
for i in range(1,total_day):
s = ""
for t in dayl:
if i - t >= 0 and i - t <len(letter_l):
s += letter_l[i - t]
ws.write(1, i, s)
save_path='/home/sun/桌面/复习计划'+subject_name+str(word_number)+'章版.xls'
w.save(save_path)
print(subject_name+'复习计划表已生成!存储位置:'+save_path)
效果如下:
2019.12.16更新:新增了可选择复习的轮数和预留做题的天数!
#ecoding=utf-8
from xlwt import Workbook
import datetime
w =Workbook()#创建一个工作簿
ws = w.add_sheet('1') #创建一个工作表
dayl=[1,2,4,8,15,30]
word_number=int(input("请输入任务数(不大于15):"))
times_number=int(input("请输入您要复习的轮数(不大于6轮):"))
exercise_number=int(input("请输入您希望预留的做题天数:"))
exam_date=input("请输入您的考试或希望完成复习的日期(格式为:2019/1/1):")
subject_name=input("请输入您的考试科目:")
year,month,day=exam_date.split("/")
total_day=word_number+dayl[times_number-1]
letter_l=[chr(i) for i in range(65, 65+word_number)]
dayl=dayl[0:times_number]
exam_date=datetime.date(int(year),int(month),int(day))
today_date=datetime.date.today()
diminish_date=str(exam_date.__sub__(today_date).days)
print('今天距考试还有'+diminish_date+'天,本计划共需要'+str(total_day+exercise_number)+'天完成复习'+',其中预留'+str(exercise_number)+'天做题,建议您从'+str(exam_date+datetime.timedelta(days=-(total_day+1)))+'开始复习'+subject_name)
ws.write(2,0,'需要复习')
ws.write(3,0,'打卡情况')
for i in range(1,total_day):
ws.write(1,i,i)
for i in range(1,total_day):
s = ""
for t in dayl:
if i - t >= 0 and i - t <len(letter_l):
s += letter_l[i - t]
ws.write(2, i, s)
s=subject_name+'考试日期为'+str(exam_date)+',本计划共需要'+str(total_day+exercise_number)+'天完成复习'+',其中预留'+str(exercise_number)+'天做题,建议您从'+str(exam_date+datetime.timedelta(days=-(total_day+1)))+'开始复习'
ws.write(0,0,s)
save_path='/home/sun/桌面/复习计划'+subject_name+str(word_number)+'章版.xls'
w.save(save_path)
print(subject_name+'复习计划表已生成!存储位置:'+save_path)
效果如下: