python应用之复习计划生成器

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)


效果如下:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
迭代器和生成器都是 Python 中用于处理大量数据的重要工具。 ## 迭代器 迭代器是一种对象,它可以被用于迭代(即遍历)数据。在 Python 中,任何实现了 `__iter__()` 和 `__next__()` 方法(在 Python 2 中是 `next()` 方法)的对象都可以作为迭代器。`__iter__()` 方法返回迭代器本身,`__next__()` 方法返回迭代器中的下一个元素。如果没有更多元素,`__next__()` 方法应该引发 `StopIteration` 异常。 例如,我们可以使用迭代器来遍历一个列表: ```python my_list = [1, 2, 3] my_iter = iter(my_list) print(next(my_iter)) # 1 print(next(my_iter)) # 2 print(next(my_iter)) # 3 ``` ## 生成器 生成器是一种特殊的迭代器,它更加灵活,更容易编写。生成器的工作方式与迭代器类似,但是生成器不需要实现 `__iter__()` 和 `__next__()` 方法,而是通过 `yield` 语句来生成数据。每次调用生成器的 `__next__()` 方法时,它会执行代码直到遇到 `yield` 语句,然后返回 `yield` 语句后面的值。当下一次调用 `__next__()` 方法时,生成器会从上次停止的地方继续执行代码,直到再次遇到 `yield` 语句。 例如,我们可以使用生成器来生成斐波那契数列: ```python def fibonacci(): a, b = 0, 1 while True: yield a a, b = b, a + b fib = fibonacci() print(next(fib)) # 0 print(next(fib)) # 1 print(next(fib)) # 1 print(next(fib)) # 2 print(next(fib)) # 3 ``` 生成器可以用于处理大量的数据,因为它们只在需要时生成数据,而不是一次性生成所有数据。此外,生成器还可以用于构建管道(pipeline)和数据流。 总之,迭代器和生成器Python 中非常有用的工具,它们可以帮助我们处理大量的数据,提高代码的简洁性和可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值