資源簡介
完整實現(xiàn)日歷,精簡程序?qū)崿F(xiàn),函數(shù)的深入應用,健壯性的體現(xiàn)
代碼片段和文件信息
#!/usr/local/bin/python
#?encoding:?utf-8
‘‘‘
Created?on?2017年3月4日
test?--?軟件流程開發(fā)學習?--?test6.13?in?Page157
@author:?????Eric
@copyright:??2017?organization_name.?All?rights?reserved.
@contact:????xj_lin@protonmail.com
@note:????根據(jù)輸入年份和月份顯示相應的當年當月日歷,函數(shù)抽象和逐步求精,采用分治方法實現(xiàn)每一步功能
‘‘‘
def?Calendar(monthyear):
????printMonthtitle(monthyear)
????printMonthBody(monthyear)
def?printMonthBody(monthyear):
????isloop?=?isLeap(year)
????#2017.1.1?is?Sunday?0(7)Sun?-?Mon?:0?-?6
????#在2017.1.1之前的計算星期幾:2017.1.1當天是周日即0(7),由0(7)減去(差距的天數(shù)模7)得到的就是所求日子為星期幾
????#在2017.1.1之后的計算:相差天數(shù)加上0再模7即可(求相差天數(shù)時不可記當天,如:2017.3.4與1.1的相差天數(shù)是31+28+3)
????#因為日歷是一個月的,所以相差天數(shù)就是之前的所有月份之和
????total_day?=?getTotalNumofDays(monthyear)
????#print(“total_day?is:“total_day)
????#判斷第一天是周幾
????if?year?>=?2017:
????????start_day?=?total_day?%?7
????else:
????????start_day?=?7?-?total_day?%?7
????#print(“start_day?is:“start_day)
????#輸出日歷
????printCalendar(yearmonthstart_day)
????
def?printCalendar(yearmonthday):
????i?=?1
????if?isLeap(year):
????????if?month?==?2:
????????????month_day?=?29
????????elif?month?in?[135781012]:
????????????month_day?=?31
????????else:
????????????month_day?=?30
????else:
????????if?month?==?2:
????????????month_day?=?28
????????elif?month?in?[135781012]:
????????????month_day?=?31
????????else:
????????????month_day?=?30
????#start_day位置標記
????j?=?0
????for?j?in?range(0day):
????????print(“????“end=““)
????if?day?==?6:
????????print(format(i“4d“))
????else:
????????print(format(i“4d“)end=““)
????#calendar輸出
????while?i?????????i?+=?1
????????day?+=?1
????????if?(day?%?7)?==?6:
????????????print(format(i“4d“))
????????elif?day?%?7?==?0:
????????????print(format(i“4d“)end=““)
????????else:
????????????print(format(i“4d“)end=““)
????
def?getTotalNumofDays(monthyear):
????total_day?=?0
????if?year?>=?2017:
????????loop?=?year?-?2017
????????y?=?2017
????????while?loop?>?0:
????????????if?isLeap(y):
????????????????total_day?+=?366
????????????else:
????????????????total_day?+=?365
????????????loop?-=?1
????????????y?+=?1
????????m?=?1
????????while?m?
- 上一篇:Python最小二乘法擬合直線
- 下一篇:python批量灰度化處理圖片
評論
共有 條評論