网络编程
位置:首页>> 网络编程>> Python编程>> 利用python实现万年历的查询

利用python实现万年历的查询

作者:诗一样的代码  发布时间:2023-02-24 03:16:01 

标签:python,万年历,查询

今天要用python做一个小功能,那就是实现万年历的查询。

首先看一下整体感觉

利用python实现万年历的查询

实现代码:


def is_leap_year(year):
  if year/4==0 and  year/400 !=0:
      return True
  elif year/100 == 0 and year/400 ==0 :
      return True
 else:
       return False

首先判断是否是闰年,因为计算2月是否有29天有用。


def getMonthDays(year,month):

days = 31        #31天居多,设置为默认值
   if month == 2 :    #2月份要判断是否是闰年
       if is_leap_year(year):
           days=29
       else:
           days=28;
   elif month in [4,6,9,11]:     #判断小月,只有30天
       days=30
   return days

由年和月份获取指定年月的月份有多少天。


def getTotalDays(year,month):

totalDays=0
   for i in range(1990,year):     #使用range来循环,算出多少年多少天
       if is_leap_year(i):        #判断是否是闰年
           totalDays += 366
       else:
           totalDays += 365
   for i in range(1,month):       #使用range循环,算出今年前面几个月过了多少天
       totalDays +=getMonthDays(year,i)
   return totalDays

获取1990-01-01离现在有多少天,1990-01-01是星期一,以这个为标准来判断。


if __name__ == '__main__':
   while True:                              
       print "××××××××××python实现万年历××××××××"
       year = raw_input("请输入年份(如:1990):")
       month = raw_input("请输入月份:如:1")
       try:                                  
           year = int(year)
           month = int(month)
           if month <1 or month >1:          
               print "年份或者月份输入错误,请重新输入!"
               continue
       except:                                
           print "年份或者月份输入错误,请重新输入!"    
           continue
       break  

print "日\t一\t二\t三\t四\t五\t六"
   iCount = 0      #计数器来判断是否换行
   for i in range(getTotalDays(year,month)%7):
       print '\t',                 #输出空不换行
       iCount+=1
   for i in range(1,getMonthDays(year,month)):
       print i,
       print '\t',
       iCount +=1
       if iCount%7 == 0 :           #计数器取余为0,换行
           print ''

最后只需要输入年份和月份,就能把完整的整个月份的日历打出来。无论是查询以前的日历还是查询未来的日历,都是可以计算出来的。

来源:https://juejin.cn/post/7013935530123493406

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com