fork download
  1. from datetime import date, timedelta
  2.  
  3. def getLastSunday(theDate):
  4. theWeekday = theDate.isoweekday()
  5. if theWeekday == 7:
  6. theWeekday = 0
  7. return theDate - timedelta(days=theWeekday)
  8.  
  9. def getNextSaturday(theDate):
  10. theWeekday = theDate.isoweekday()
  11. if theWeekday == 7:
  12. theWeekday = 0
  13. return theDate + timedelta(days=6 - theWeekday)
  14.  
  15. def genWeekDays(bOW):
  16. return [str((bOW + timedelta(days=i)).day) for i in range(0, 7)]
  17.  
  18. def genMonthDic(year, month):
  19. bOM = date(year, month, 1)
  20. if month == 12:
  21. eOM = date(year+1, 1, 1) - timedelta(days=1)
  22. else:
  23. eOM = date(year, month+1, 1) - timedelta(days=1)
  24. bOC = getLastSunday(bOM)
  25. eOC = getNextSaturday(eOM)
  26. return {
  27. 'year': year,
  28. 'month': month,
  29. 'days': [genWeekDays(bOC + timedelta(days=i)) for i in range(0, (eOC-bOC).days, 7)]
  30. }
  31.  
  32. def monthDicToDisplay(md):
  33. print("年份:", md['year'])
  34. print("月份:", md['month'])
  35. print("\t".join(['星期天','星期一','星期二','星期三','星期四','星期五','星期六']))
  36. for i in md['days']:
  37. print("\t".join(i))
  38. print("---------------------------------------------------------------------------")
  39.  
  40.  
  41. theYear = int(input("請輸入年份:"))
  42. for i in range(1, 13):
  43. monthDicToDisplay(genMonthDic(theYear, i))
  44.  
Success #stdin #stdout 0.02s 9472KB
stdin
2020
stdout
請輸入年份:年份: 2020
月份: 1
星期天	星期一	星期二	星期三	星期四	星期五	星期六
29	30	31	1	2	3	4
5	6	7	8	9	10	11
12	13	14	15	16	17	18
19	20	21	22	23	24	25
26	27	28	29	30	31	1
---------------------------------------------------------------------------
年份: 2020
月份: 2
星期天	星期一	星期二	星期三	星期四	星期五	星期六
26	27	28	29	30	31	1
2	3	4	5	6	7	8
9	10	11	12	13	14	15
16	17	18	19	20	21	22
23	24	25	26	27	28	29
---------------------------------------------------------------------------
年份: 2020
月份: 3
星期天	星期一	星期二	星期三	星期四	星期五	星期六
1	2	3	4	5	6	7
8	9	10	11	12	13	14
15	16	17	18	19	20	21
22	23	24	25	26	27	28
29	30	31	1	2	3	4
---------------------------------------------------------------------------
年份: 2020
月份: 4
星期天	星期一	星期二	星期三	星期四	星期五	星期六
29	30	31	1	2	3	4
5	6	7	8	9	10	11
12	13	14	15	16	17	18
19	20	21	22	23	24	25
26	27	28	29	30	1	2
---------------------------------------------------------------------------
年份: 2020
月份: 5
星期天	星期一	星期二	星期三	星期四	星期五	星期六
26	27	28	29	30	1	2
3	4	5	6	7	8	9
10	11	12	13	14	15	16
17	18	19	20	21	22	23
24	25	26	27	28	29	30
31	1	2	3	4	5	6
---------------------------------------------------------------------------
年份: 2020
月份: 6
星期天	星期一	星期二	星期三	星期四	星期五	星期六
31	1	2	3	4	5	6
7	8	9	10	11	12	13
14	15	16	17	18	19	20
21	22	23	24	25	26	27
28	29	30	1	2	3	4
---------------------------------------------------------------------------
年份: 2020
月份: 7
星期天	星期一	星期二	星期三	星期四	星期五	星期六
28	29	30	1	2	3	4
5	6	7	8	9	10	11
12	13	14	15	16	17	18
19	20	21	22	23	24	25
26	27	28	29	30	31	1
---------------------------------------------------------------------------
年份: 2020
月份: 8
星期天	星期一	星期二	星期三	星期四	星期五	星期六
26	27	28	29	30	31	1
2	3	4	5	6	7	8
9	10	11	12	13	14	15
16	17	18	19	20	21	22
23	24	25	26	27	28	29
30	31	1	2	3	4	5
---------------------------------------------------------------------------
年份: 2020
月份: 9
星期天	星期一	星期二	星期三	星期四	星期五	星期六
30	31	1	2	3	4	5
6	7	8	9	10	11	12
13	14	15	16	17	18	19
20	21	22	23	24	25	26
27	28	29	30	1	2	3
---------------------------------------------------------------------------
年份: 2020
月份: 10
星期天	星期一	星期二	星期三	星期四	星期五	星期六
27	28	29	30	1	2	3
4	5	6	7	8	9	10
11	12	13	14	15	16	17
18	19	20	21	22	23	24
25	26	27	28	29	30	31
---------------------------------------------------------------------------
年份: 2020
月份: 11
星期天	星期一	星期二	星期三	星期四	星期五	星期六
1	2	3	4	5	6	7
8	9	10	11	12	13	14
15	16	17	18	19	20	21
22	23	24	25	26	27	28
29	30	1	2	3	4	5
---------------------------------------------------------------------------
年份: 2020
月份: 12
星期天	星期一	星期二	星期三	星期四	星期五	星期六
29	30	1	2	3	4	5
6	7	8	9	10	11	12
13	14	15	16	17	18	19
20	21	22	23	24	25	26
27	28	29	30	31	1	2
---------------------------------------------------------------------------