国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python學習插曲之萬年歷算法

2019-11-06 07:19:07
字體:
來源:轉載
供稿:網友

Python實現萬年歷

1.最近在學習Python的過程中,想起了以前學習C語言時的萬年歷算法,就打算寫一下,主要是為了熟悉Python的語法,以此來銘記一下Python的學習歷程。

2.實現萬年歷需要用到的基本知識有 

閏年判斷算法給定某年某月某日是星期幾,計算某年某月某日是星期幾算法(通常以1800年1月1日星期三為起始)計算兩個給定日期之間相隔多少天

3.以下是代碼實現:

#coding=utf-8  """@ function perpetual calendar;@author:  wly@Date: 2017-03-05@description: 輸入一個年份可以打印這一年的日歷。Python基礎學習插曲""""""1.is_leap_year 判斷是否問閏年的函數2.get_month_days 獲取一個月有多少天3.get_total_days 已知1800年1月1日為星期3,距某年某月多少天4.get_start_day  獲取某年某月的第一天是星期幾 """# 定義基礎數據arrWeek = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];arrMonth = ["January","February","March","APRil","May","June","July","August","September","October","November","December"];def is_leap_year(year):    if (year % 4 ==0 and year % 100 !=0 or year % 400 ==0):        return True    else:        return False    def get_month_days(year,month):        if(month in (1,3,5,7,8,10,12)):            return 31;        elif(month in (4,6,9,11)):            return 30;        elif(is_leap_year(year)):            return 29;        else:            return 28;def get_total_days(year,month):        days = 0;        for i in range(1800,year):            if(is_leap_year(i)):                 #閏年                days += 366;                 else:                #平年                days += 365;                     #一直計算到所求月份前一個月即可        for j in range(1,month):            days += get_month_days(year, j);        return days;            def get_start_day(year,month):        #計算是星期幾        return (3 + get_total_days(year, month)) % 7;  def print_calendar(year):       for k,m in enumerate(arrMonth):        #打印日歷的月份和年份        print "    ",m,"   ",year                          print "---------------------------"                #計算這個月有幾天        day = get_month_days(year, k+1);        #計算這個月的第一天是星期幾                 startDay = get_start_day(year, k+1);                #打印星期表頭        for k,v in enumerate(arrWeek):                          print "%3s" % v,                            print                #打印這個月的天數        for i in range(1,day+1):            #計算要縮進幾個單位                            temp = (startDay + i-1) % 7                 #用于縮進格式,只要這個月的第一天縮進正確即可                    if(i==1):                #循環打印縮進單位                                         for j in range(temp):                                   print "   ",            print "%3s" % i,            #打印到星期六之后要換行            if(temp == 6) :                                         print        #一個月遍歷完成打印結束分隔符        print                                               print "---------------------------"#調用程序print_calendar(2017);                               

4. 運行結果如下圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 津南区| 即墨市| 古蔺县| 罗甸县| 镇康县| 巨野县| 阿图什市| 蒙自县| 株洲县| 察雅县| 金湖县| 余江县| 绍兴县| 平阳县| 静安区| 金昌市| 库伦旗| 通化市| 敦煌市| 秦安县| 田林县| 临西县| 保康县| 宁城县| 枣庄市| 中牟县| 枣阳市| 通河县| 锡林浩特市| 襄汾县| 麻阳| 嘉峪关市| 临江市| 红河县| 崇义县| 安顺市| 车险| 包头市| 邢台市| 马鞍山市| 大同市|