練習python函數制作萬年歷
運行效果如下:
1 ##判斷是否閏年 2 def isleap(year): 3 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: 4 return True 5 else: 6 return False 7 8 ##判斷每個月有多少天 9 def get_day(year,month): 10 if month in [1, 3, 5, 7, 8, 10, 12]: 11 return 31 12 elif month in [4, 6, 9, 11]: 13 return 30 14 else: 15 if isleap(year): 16 return 28 17 else: 18 return 29 19 20 21 def wanNianLi(): 22 year_in = int(input("InPut the Year:")) 23 month_in = int(input("InPut the Month:")) 24 day_in = int(input("InPut the day:")) 25 #判斷是不是閏年 26 if isleap(year_in): 27 print("%d是閏年"%year_in) 28 else: 29 print("%d不是閏年"%year_in) 30 #獲取這個月有多少天數 31 day_num = get_day(year_in,month_in) 32 print("%d年%d月有%d天"%(year_in,month_in,day_num)) 33 34 #計算從1900到當前年有多少天 35 day_now = 0 36 for i in range(1900,year_in): 37 if isleap(year_in): 38 day_now += 366 39 else: 40 day_now += 365 41 print("從1900年到%d年有%d天"%(year_in,day_now)) 42 43 def sum_day(year_in,month_in,day_in): 44 ''' 45 #計算1900年1月1日到輸入的年月日的天數 46 :param year_in: 47 :param month_in: 48 :param day_in: 49 :return: 50 ''' 51 #計算用戶輸入的月份到輸入的年份的1月1日有多少天 52 day_long = 0 53 for i in range(1, month_in): 54 day_long+=get_day(year_in,i) 55 else: 56 day_long+=day_in 57 #print('1月1日到%d月%d日有%d天'%(month_in,day_in,day_long)) 58 59 #計算1900年1月1日到輸入的年月日的天數 60 day1900toNow = day_now + day_long 61 #print('1900年1月1日到%d年%d月%d日有%d天'%(year_in,month_in,day_in,day1900toNow)) 62 return day1900toNow 63 64 def get_week(year_in,month_in,day_in): 65 ''' 66 # 計算輸入月的星期數,1900年1月1日是星期一 67 :param year_in: 68 :param month_in: 69 :param day_in: 70 :return: 71 ''' 72 # 計算輸入月的星期數,1900年1月1日是星期一 73 week = sum_day(year_in,month_in,day_in) % 7 74 if week == 0: 75 week = 7 76 #print("%d年%d月%d日是星期%s" % (year_in, month_in, day_in, week)) 77 return week 78 get_week(year_in,month_in,day_in) 79 ##格式化 80 print("日\t一\t二\t三\t四\t五\t六\t") 81 day_week = get_week(year_in, month_in, 1) 82 print("\t" * day_week,end='') 83 for imon in range(1,get_day(year_in,month_in)+1): 84 print(imon,'\t',end='') 85 if get_week(year_in, month_in, imon)==6: 86 print() 87 wanNianLi()