美文网首页
利用python实现万年历

利用python实现万年历

作者: python_spider | 来源:发表于2018-01-29 04:16 被阅读65次

    代码如下:

      1 #!/usr/bin/env python2
      2 #-*- coding:utf-8 -*-
      3 """
      4 使用python实现万年历
      5 """
      6 
      7 def is_leap_year(year):
      8     """
      9     判断是否是闰年,返回boolean值
     10     """
     11     if year/4==0 and  year/400 !=0:
     12         return True
     13     elif year/100 == 0 and year/400 ==0 :
     14         return True
     15     else:
     16         return False
     17 
     18 def getMonthDays(year,month):
     19     """
     20     获取指定年月的月份有多少天
     21     """
     22     days = 31        #31天居多,设置为默认值
     23     if month == 2 :    #2月份要判断是否是闰年
     24         if is_leap_year(year):
     25             days=29
     26         else:
     27             days=28;
     28     elif month in [4,6,9,11]:     #判断小月,只有30天
     29         days=30
     30     return days
     31 
     32 def getTotalDays(year,month):
     33     """
     34     获取1990-01-01离现在有多少天,1990-01-01是星期一,以这个为标准来判断星期
     35     """
     36     totalDays=0
     37     for i in range(1990,year):     #使用range来循环,算出多少年多少天
     38         if is_leap_year(i):        #判断是否是闰年
     39             totalDays += 366
     40         else:
     41             totalDays += 365
     42     for i in range(1,month):       #使用range循环,算出今年前面几个月过了多少>    天
     43         totalDays +=getMonthDays(year,i)
    44     return totalDays
     45 
     46 
     47 if __name__ == '__main__':
     48     while True:         #循环判断是否输入错误的格式
     49         print "××××××××××python实现万年历××××××××"
     50         year = raw_input("请输入年份(如:1990):")
     51         month = raw_input("请输入月份 (如:      1)   :  ")
     52         try:              #捕捉输入异常格式和月份的正确
     53             year = int(year)
     54             month = int(month)
     55             if month <1 or month >12:            #判断月份是否输入错误,错误就重新开始循环
     56                 print "年份或者月份输入错误,请重新输入!"
     57                 continue
     58         except:                #捕捉到转换成整型异常,输出提示,重新开始循环
     59             print "年份或者月份输入错误,请重新输入!"
     60             continue
     61         break     #如果没有异常就跳出循环
     62 #if is_leap_year(year):
     63 #    print "%s是润年"%year
     64 #else:
     65 #    print "%s是平年"%year
     66 #print "%s月份总共有%s天!"%(month,getMonthDays(year,month))
     67 
     68 print "日\t一\t二\t三\t四\t五\t六"
     69 iCount = 0      #计数器来判断是否换行
     70 for i in range(getTotalDays(year,month)%7+1):
     71     print '\t',                 #输出空不换行
     72     iCount+=1
     73 for i in range(1,getMonthDays(year,month)):
     74     print i,
     75     print '\t',
     76     iCount +=1
     77     if iCount%7 == 0 :           #计数器取余为0,换行
     78         print ''
    
    
    

    运行效果:


    运行效果

    相关文章

      网友评论

          本文标题:利用python实现万年历

          本文链接:https://www.haomeiwen.com/subject/wgmtzxtx.html