程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

用Python寫的自動生成孩子復習時間的代碼

編輯:Python

孩子學習一個知識有三個階段:課前預習+上課認真學習+課後適時復習

課後適時復習需要時間表,比如下面這樣:

這個時間表最麻煩的是每天都要手動去計算復習時間,我手動計算了一段時間,真是耗時又容易出錯,人的腦子不適合做這種計算。

這種簡單重復的計算還是應該交給計算機來完成。

所以昨晚用Python寫了個代碼,完成上面的任務。

代碼如下:

# !/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime # 導入時間模塊
# 日期計算函數
# start_date_list為列表對象,三個int元素,分別表示年月日
# day_step為向後多少天
# 返回值end_date_list也為列表對象,三個int元素,分別表示年月日
def date_count(start_date_list, day_step):
year_start = start_date_list[0]
month_start = start_date_list[1]
day_start = start_date_list[2]
start_date = datetime.datetime(year_start, month_start, day_start)
end_date = start_date + datetime.timedelta(day_step)
year_end = end_date.year
month_end = end_date.month
day_end = end_date.day
end_date_list = [year_end, month_end, day_end]
return end_date_list
study_date = input("請輸入年月日(如1990-01-01):") # 輸入當前日期
# study_date = '2022-06-27'
# 將輸入的日期字符串拆分並轉化為int型
study_date_split = study_date.split("-")
year1 = study_date_split[0]
month1 = study_date_split[1]
day1 = study_date_split[2]
year1_int = int(year1)
month1_int = int(month1)
day1_int = int(day1)
# 生成第一階段(連續復習七天)的復習時間
date_point_1 = [year1_int, month1_int, day1_int]
date_point_2 = date_count(date_point_1, 6)
stage_1_str = '{}月{}日至{}月{}日'.format(date_point_1[1], date_point_1[2], date_point_2[1], date_point_2[2])
# 生成第二階段(連續復習四周,一周復習一次)的第一周復習時間
date_point_3 = date_count(date_point_2, 1)
date_point_4 = date_count(date_point_3, 6)
stage_2_str1 = '第一周({}月{}日至{}月{}日)'.format(date_point_3[1], date_point_3[2], date_point_4[1], date_point_4[2])
# 生成第二階段(連續復習四周,一周復習一次)的第二周復習時間
date_point_5 = date_count(date_point_4, 1)
date_point_6 = date_count(date_point_5, 6)
stage_2_str2 = '第二周({}月{}日至{}月{}日)'.format(date_point_5[1], date_point_5[2], date_point_6[1], date_point_6[2])
# 生成第二階段(連續復習四周,一周復習一次)的第三周復習時間
date_point_7 = date_count(date_point_6, 1)
date_point_8 = date_count(date_point_7, 6)
stage_2_str3 = '第三周({}月{}日至{}月{}日)'.format(date_point_7[1], date_point_7[2], date_point_8[1], date_point_8[2])
# 生成第二階段(連續復習四周,一周復習一次)的第四周復習時間
date_point_9 = date_count(date_point_8, 1)
date_point_10 = date_count(date_point_9, 6)
stage_2_str4 = '第四周({}月{}日至{}月{}日)'.format(date_point_9[1], date_point_9[2], date_point_10[1], date_point_10[2])
# 匯總第二階段的復習時間
stage_2_str = stage_2_str1+stage_2_str2+stage_2_str3+stage_2_str4
# 生成第三階段(連續復習五個月,一個月復習一次)的復習時間
stage_3_day = date_point_10[2]
stage_3_months = [date_point_10[1]+1, date_point_10[1]+2, date_point_10[1]+3, date_point_10[1]+4, date_point_10[1]+5]
stage_3_str = '{0}月{5}日 {1}月{5}日 {2}月{5}日 {3}月{5}日 {4}月{5}日'.format(stage_3_months[0], stage_3_months[1],
stage_3_months[2], stage_3_months[3],
stage_3_months[4], stage_3_day)
# 打印輸出所有復習時間
print('今天子衡學習內容的復習時刻表如下:')
# 本來下面這條語句中應該用tab字符(\t)作為分隔符的,
# 但是不在Pycharm中運行時,輸出的tab字符元法被Excel識別
# 不僅無法識別,還導致每個階段與每個階段之間的空白太大
# 所以只好用'#'代替,只是需要把生成的內容復制到txt中再作個替換
# 把'#'用tab替換
char_separate = '#'
str_all = stage_1_str+char_separate+stage_2_str+char_separate+stage_3_str
print(str_all)
# 讓cmd窗口不要自動關閉
input('Press Enter to exit...')

代碼就不解釋了,上面的注釋已經寫得很清楚了。

運行結果如下:




把上面的內容復制到Notepad++中,

然後對‘#’作替換處理:

然後把替換好的內容粘貼到Excel中就行了~

由於復制的內容到了tab制表符,所以Excel自動按三列存儲了。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved